struts2中路径的设置

本文介绍了在Struts2框架中如何正确配置路径,包括绝对路径与相对路径的区别及使用方法,推荐使用绝对路径以避免路径相关的问题。

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

关键字: struts2 路径
struts2中路径的设置

在struts2中最好使用绝对路径。

MyEclipse中常用的设置路径的方法:

Java代码
<%
String path = request.getContextPath();
//则path的值是:应用的路径即http://localhost:9000/Struts2_0400_Path/
String basePath = request.getScheme()+"://"+request
.getServerName ()+":"+request.getServerPort()+path+"/";
%>

request.getScheme()值是:http

request.getServerName()的值是:localhost

request.getServerPort()的值是:9000

path的值是: struts2_0400_Path

在使用的时候,只需在path后面加上namespace/*.action
例如:
引用
<a href="<%=path%>/index.jsp">index.jsp</a>


另外一种方式:
在html的head中加入如下代码

Java代码
<base href=”<%=basePath%>”/>

这里的意思就是说这个jsp页面里所有的<a href/>连接都会在前面加上basePath,如 <a href=”test.jsp”>,则实际的是<a href=” http://localhost:9000/struts2_0400_Path/test.jsp”/>;

但是如果说是
引用
<a href=”/index.jsp”>index.jsp</a>

这样访问的话,那么访问的将是tomcat的根目录,而不是应用项目的根目录)
即http://localhost:9000/index.jsp

因为在jsp中,"/"代表的是站点的跟路劲,而不是应用的根路径。
Struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径),或者使用myeclipse经常用的,指定basePath。如下:
<struts>
<constant name="struts.devMode" value="true" />
<package name="path" extends="struts-default" namespace="/path">
<action name="path" class="com.bjsxt.struts2.path.action.PathAction">
<result name="path">/path.jsp</result>
</action>
</package>
</struts>


当request访问Action之后,进入了path.jsp。在这个jsp中,有如下链接:
<a href="index.jsp">index.jsp</a>
此时,index.jsp存在于根目录下,但是通过页面点击,则进入/path/path/index.jsp
所以在JSP中加入如下语句:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()
+":"+request.getServerPort()+path+"/";
%>

之后,使用<a href="<%=basePath%>index.jsp">index.jsp</a>
或者在head中加入:<base href="<%=basePath%>" />,然后再使用<a href="index.jsp">链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值