关于“Struts2学习笔记(3)-DMI动态调用方式”的攻略,以下是详细内容:
什么是DMI动态调用方式?
DMI的全称为Dynamic Method Invocation,即动态方法调用。DMI可让Struts2框架在运行时跳过了常规的Action拦截器栈,直接调用目标方法。
在DMI中,Action类中定义的方法就成了可调用的动作,Struts2框架通过方法名称和参数类型转发请求。
如何使用DMI动态调用方式?
使用DMI动态调用方式,只需要在STRUTS2配置中,使用
<action name="exampleAction" class="com.example.action.ExampleAction" method="execute"></action>
上面的xml配置段就告诉Struts2框架,当请求exampleAction的时候,使用ExampleAction类的execute()方法作为处理方法。此时,Struts2框架仅仅只是调用了ExampleAction类的execute()方法,并没有使用常规的Action拦截器栈,因此需要我们手动处理方法调用过程中的异常。
DMI的使用示例
下面提供两个DMI动态调用方式的示例。
示例一:DMI调用无参方法
假设有一个名为HelloAction的Action类,其中定义了一个名为sayHello()的无参方法。如下:
public class HelloAction extends ActionSupport {
public String sayHello() {
return SUCCESS;
}
}
在Struts2的配置文件中,可以通过method属性指定调用sayHello()方法。如下:
<action name="hello" class="com.example.action.HelloAction" method="sayHello"></action>
这样,在浏览器中请求"/hello"路径时,Struts2框架就会直接调用HelloAction类中的sayHello()方法。
示例二:DMI调用带参方法
假设有一个名为UserAction的Action类,其中定义了一个名为getUserInfo()的方法,该方法带有一个名为userId的参数。如下:
public class UserAction extends ActionSupport {
public String getUserInfo(String userId) {
// 根据userId获取用户信息
return SUCCESS;
}
}
在Struts2的配置文件中,可以通过params属性指定调用getUserInfo()方法时所需要的参数。如下:
<action name="user" class="com.example.action.UserAction" method="getUserInfo">
<param name="userId">123456</param>
</action>
这样,在浏览器中请求“/user”路径时,Struts2框架就会以“123456”为userId参数的值,直接调用UserAction类中的getUserInfo()方法。
结束语
以上就是对“Struts2学习笔记(3)-DMI动态调用方式”的完整攻略。如有不足之处,欢迎指出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2学习笔记(3)-DMI动态调用方式 - Python技术站