Struts2中namespace引发的路径问题

转自: http://blog.csdn.net/csz_363874279qqcom/article/details/5875535

Path 路径问题
         1 .如果在 struts.xml 文件中找不到与访问路径相对应的 namespace ,那么监听器就会把它交给 tomcat 处理,如 tomcat 就会返回 <welcome-file-list> 所对应的页面,如果 web.xml 文件中没有设置 <welcome-file-list> 元素,而且 struts.xml 文件中又找不到与访问路径相对应的 namespace tomcat 就会报错。
         2.  <a href="path/path.action"> 路径问题说明 </a> 当点击这个链接时,它会到 struts.xml 文件中找值为“ /path ”的 namespace ,然后在该 namespace 下找 path. Action
         3.<a href=”/index.jsp”> 首页 </a> jsp 文件中,绝对路径“ / ”表示的是 http://localhost:8080/ ,而不是你站点的根路径,所以该链接地址为: http://localhost:8080/index.jsp
         4 .在页面 http://localhost:8080/Struts2_0400_Path/path/path.action 中有一链接 <a href=”index.jsp”>index.jsp</a> ,点击 index.jsp ,链接的地址是 http://localhost:8080/Struts2_0400_Path/path/index.jsp ,而不是 http://localhost:8080/Struts2_0400_Path/index.jsp ,即 struts2 中的路径问题是根据 action 的路径而不是 jsp 路径来确定,所以尽量不要使用相对路径。如果   不是 struts2 的应用,那么在普通 jsp 页面中的 <a href=”index.jsp”>index.jsp</a> <a href=”path/path.action”> 路径问题说明 </a> 链接中表示的相对路径,就是相对于当前 jsp 页面所在的路径,一般都是 web 站点的根目录的,即链接地址为 http://localhost:8080/Struts2_0400_Path/index.jsp
         5 .在第 4 点的基础上,如果 jsp 页面上加上如下语句:
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+ "://" +request.getServerName()+ ":" +request.getServerPort()+path+ "/" ;
%>
< head > <base href=" <%= basePath %> " /> </ head >// <head> 标签下加上这一语句,那么这个页面上的所有链接都是默认指向 basePath 下的路径或文件的。
那么点击链接 <a href=”index.jsp”>index.jsp</a> ,链接到的是站点根路径下的 index.jsp ,即访问的地址为 http://localhost:8080/Struts2_0400_Path/index.jsp
         6 .总结:
struts2 中的路径问题是根据 action 的路径而不是 jsp 路径来确定,所以尽量不要使用相对路径。  
解决办法非常简单,统一使用绝对路径。
或者使用 myeclipse 经常用的,指定 basePath

你可能感兴趣的:(struts2,namespace,路径)