Struts2学习 动态方法调用(DMI)

动态方法调用(DMI)作用: 一个Action中包含多个方法,通过DMI可只配一个action访问路径,通过不同的url,  http://localhost:8080/project-name/package-namespace/action-name!方法名来访问不同的方法。

后台 VstAction.class

public class VstTestAction extends ActionSupport{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String TAG = VstTestAction.class.getSimpleName();
	private Log logger = LogFactory.getLog(VstTestAction.class);
	
	public String add() throws Exception{
		logger.debug(TAG + "[执行add()方法]");
		return SUCCESS;
	}
	
	public String del() throws Exception{
		logger.debug(TAG + "[执行del()方法]");
		return SUCCESS;
	}
	
}

1.传统的action访问,配置structs.xml

<pre name="code" class="plain"><package name="default" namespace="/" extends="struts-default">
	<action name="vst1" class="com.danny.structs.test.VstTestAction"  method="add">
		<result>/Hello.jsp</result>
	</action>
<span>	</span><action name="vst2" class="com.danny.structs.test.VstTestAction"  method="del">
		<result>/Hello.jsp</result>
	</action>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></package></span>
 
 
 通过action 里的method属性,决定调用哪个方法,几个方法就有几个action 

但是这样的方法会导致structs.xml很臃肿,因此可采用structs2.xml的动态方法调用或通配符方法调用,实现在只配置一个Action但可调用action里的所有方法,这里先学习动态方法调用。

2.动态方法调用访问配置strcuts.xml

<constant name="struts.enable.DynamicMethodInvocation" value="true"/><!-- 打开动态方法调用DMI -->
<package name="test" namespace="/test" extends="struts-default">
<span style="white-space:pre">	</span><action name="vst" class="com.danny.structs.test.VstTestAction">
	<span style="white-space:pre">	</span><result>/index.jsp</result>
	</action>
</package>

注意,一定要加上,structs2默认不支持动态方法调用(DMI),要通过下面这句话打开动态方法调用,否则是无效的

<constant name="struts.enable.DynamicMethodInvocation" value="true"/><!-- 打开动态方法调用DMI -->

访问方式:

http://localhost:8080/structs_demo/test/vst!del

http://localhost:8080/structs_demo/test/vst!add

通过package-namespace/action-name!方法名来访问不同的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值