struts2 路径问题—method问题—通配符

首先说说struts2 的路径问题

struts2中的路径是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。

虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath (最佳方法)

在jsp页面中指定basePath:

 <%String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<head>
<base href="<%=basePath%>" />

</head>

通过上述配置,则后面jsp中的各种跳转直接<a href="index.jsp">index.jsp</a>就可以实现

 

第二:method问题

之前在struts.xml中配置时一直使用的是 <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">这样的精确配置,可后面发现这样当面临多个方法时就比较麻烦。解决方案就是使用动态方法调用即DMI(Dynamic Method Invocation)

使用DMI的动态方法调用则在struts.xml文件中配置相对简单
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
   <result>/user_add_success.jsp</result>
</action>

在jsp页面中<a href="<%=basePath %>user/user!add">添加用户</a>

 

第三:通配符问题

使用通配符后得到的最简配置为

 <package name="actions" extends="struts-default" namespace="/actions">

<action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}_success.jsp</result>

</action>

</package>

在jsp页面中<a href="<%=basePath %>actions/Teacher_add">添加老师</a>    这样的话{1}_{2}就代表 Teacher_add

也就是说一个StudentAction.java中有一个方法为add();

同时有一个页面叫做Teacher_add_success.jsp

转载于:https://www.cnblogs.com/adafox51/archive/2012/05/07/2489153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值