Struts2中namespace和result的路径问题

2019-03-01 10:14:22来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

自己种下的因,现在结下的过,所以从现在开始,为以后有一个好的果!

 

今天在配置struts2的namespace的时候,遇到了学习struts的第一个坑,所以来写一篇也是第一篇博客来给我增加记忆。

 

1.首先上代码:

<package name="p2" extends="struts-default" namespace="/user">
<action name="user_Add" class="priv.xxx.web.aciton.UserAction" method="userAdd">
<result name="success">WEB-INF/user/userAdd.jsp</result>
</action>
</package>

 

2.上述代码中看似并没有什么问题,但是在访问时会报错,报错如下: 

 3.很奇怪,为什么前面会自动加上/user呢?于是带着这个问题,我上了百度....emmmm

   原因如下:

     因为namespace是struts.xml配置文件中package标签中的属性,不仅决定了访问时URL的路径也决定了你的result访问jsp页面的路径,所以会出现以上问题。

    例子1:

<package name="p2" extends="struts-default" namespace="/">
<action name="user_Add" class="priv.xxx.web.aciton.UserAction" method="userAdd">
<result name="success">WEB-INF/user/userAdd.jsp</result>
</action>
</package>

    如上述代码来说,当你访问localhost:8080/user_add时,会在你的根目录下找,其中的action为user_Add的路径,result中的路径并不是全路径(不知全路径可自行百度),访问

    user_Add会在result加上“/”,会变成“/WEB-INF/user/userAdd.jsp”,这样是没有问题的。但是!请看接下来的情况。

    例子2:

  
<package name="p2" extends="struts-default" namespace="/user">
<action name="user_Add" class="priv.xxx.web.aciton.UserAction" method="userAdd">
<result name="success">WEB-INF/user/userAdd.jsp</result>
</action>
</package>
 
   

      当你访问时,如上所述,就会在你的result的路径前加上namespace,result为“/user/WEB-INF/user/userAdd.jsp”所以导致404。也就是最开始的问题。

  如何解决呢?

    很简单,只需要在你的result路径前面加上“/”变成全路径即可解决。如下:

    <result name="success">/WEB-INF/user/userAdd.jsp</result>

 


原文链接:https://www.cnblogs.com/xiaocore/p/10452066.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java面试题精选,大型网站系统架构你不得不懂的10个问题

下一篇:Git常用日志命令