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

来源:互联网 发布:淘宝售后评价回复 编辑:程序博客网 时间:2024/05/17 08:08

动态方法调用(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!方法名来访问不同的方法

0 0
原创粉丝点击