DMI即动态调用。在调用方法中常见的是Action元素中的method方法。但这种方法效率不高。调用不同方法需要在struts.xml中逐一配置。在刚接触调用时。对于这个问题有许多人提供的解决方法是重定向即redirect。但这种方法难理解,不太方便,这里便不多说了。下面看一下DMI
这是一个简单的xml配置。实现UserAction中add方法。
<struts>
<constant name="struts.devMode" value="true" />
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction" method="add">
<result>/user_add_success.jsp</result>
</action>
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_add_success.jsp</result>
</action>
</package>
</struts>
第一个action中使用传统的method方法,不多说。看第二个action。二者实现相同的功能但却省略了method的方法。这在一个大型项目需要调用一个action类中的多个方法时DMI就起到了至关重要的作用。对于DMI并不是说他没有配置,而是说他把配置写到了URL中
<a href="<%=context %>/user/userAdd">添加用户</a>
<br />
<a href="<%=context %>/user/user!add">添加用户</a>
<br />
DMI就是把对方法的调用写到了jsp中的URL里。需要注意的是在使用DMI时要使用开发模式即<constant name="struts.devMode" value="true" />将这条语句中value设置为true。