Struts2中namespace引发的路径问题

Path路径问题

         1.如果在struts.xml文件中找不到与访问路径相对应的namespace,那么监听器就会把它交给tomcat处理,如tomcat就会返回<welcome-file-list>所对应的页面,如果web.xml文件中没有设置<welcome-file-list>元素,而且struts.xml文件中又找不到与访问路径相对应的namespacetomcat就会报错。

         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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章