struts2动态方法调用和通配符配置

struts2默认一个action需要继承ActionSupport并提供默认execute方法,在struts.xml文件中需要配置action对应的类和返回结果页面。随着开发的进行,请求会越来越多,这样我们的action会越来越多,而且在struts.xml中的配置也会越来越多,这么繁琐的编码和配置,肯定不是struts2的初衷。当然有可以解决这种多请求的办法。我们可以在一个action总定义多个方法,减少了action类的编写,但是同样需要配置action方法和结果页面。这就有了动态方法调用和通配符配置。

动态方法调用(action和method之间用感叹号!,这是规定)

struts2默认关闭了动态方法调用,需要在配置中开启,配置常量为:struts.enable.dynamicmethodinvocation=true。开启之后,我们访问/struts/user!add.action就可以访问到UserAction中的add方法,同理,我们可以通过/struts/user!list.action访问UserAction中的list方法。我们开启了动态方法调用,可以访问到我们对应的方法,但是结果页面,还是需要配置,这里引入了一个struts2-convention-plugin(pom.xml需要引入struts2-convention-plugin依赖),他可以帮助我们找到结果页面。

UserAction.java的代码:

package com.xxx.struts.action;
public class UserAction {
	
	public String list(){
		return "list";
	}
	
	public String add(){
		return "edit";
	}
	
	public String update(){
		return "edit";
	}
}

访问:http://localhost:8080/struts/user!add.action,得到得页面:

访问:http://localhost:8080/struts/user!list.action,得到得页面:

通配符配置(action和method之间用下划线,可以配置)

通配符可以通过action_*的方式访问action下的相关方法,在struts.xml中配置如下。

<package name="mystruts" extends="struts-default"> 
    <action name="user_*" class="com.xxx.struts.action.UserAction" method="{1}">
         <result name="edit">WEB-INF/template/user-edit.jsp</result>
         <result name="list">WEB-INF/template/user-list.jsp</result>
    </action>
 </package>

这里的*就是指定的方法,{1}代表*处的方法,如果*是add那么访问对应的add方法,如果是list,那么访问对应的list方法。

UserAction.java

package com.xxx.struts.action;
import org.apache.struts2.convention.annotation.ParentPackage;
@ParentPackage("mystruts")
public class UserAction {
	
	public String list(){
		return "list";
	}
	
	public String add(){
		return "edit";
	}
	
	public String update(){
		return "edit";
	}
}

访问:http://localhost:8080/struts/user_add.action,得到得页面:

访问:http://localhost:8080/struts/user_list.action,得到的页面:

实现了动态方法调用。

另外如果项目中加入了struts2-config-browser插件,我们可以通过访问action服务列表,查看我们的action映射:

http://localhost:8080/struts/config-browser/actionNames.action

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值