转自: 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
。