struts2 _ action基本配置_路径问题

本文介绍Struts2框架中的动态方法调用(DMI)配置方式及路径配置技巧,包括如何通过通配符配置Action,实现动态指定执行的方法,并提供了解决路径问题的方法。

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

//IndexAction。java

public class IndexAction extends ActionSupport {

public String execute() {
return "success";
}
}



//对应的struts.xml

<package name="front" extends="struts-default" namespace="/">
<action name="index" class="front.action.IndexAction" method="...">
<result name="success">/ActionIntroduction.jsp</result>
</action>
</package>

Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)

DMI(动态方法调用)方式:
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="user.action.UserAction">
<result>/user_add_success.jsp</result>
</action>
</package>

链接写法:<a href="user/user!add">添加用户</a>


使用通配符配置action方式:

<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
</action>
</package> 其中"{1}”表示第1个*号,"{2}”表示第2个*号,以此类推





2) 路径问题
struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径
虽然可以用redirect方式解决,但redirect方式并非必要。

解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)

或者使用myeclipse经常用的,指定basePath


解决办法:

加入:

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

request.getServerName()+":"+request.getServerPort()+path+"/";
%>

在<head>标签后加入

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



这样,这个页面中所的连接,jsp都会帮忙加上:http://localhost:8080/appricationName/ (类似这样的东西)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值