Struts2中namespace引发的路径问题

本文详细解析了Struts2框架中的路径问题,包括如何处理不同情境下的路径引用,特别是绝对路径与相对路径的区别及应用场景,并提供了实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值