struts2三大动态调用

struts2动态方法调用

在同一Action类中定义多个方法,这种多方法对应用户请求的模式成为动态调用,具体调用的方法由用户指定,默认调用的是execute()方法。

动态方法一 配置文件指定方法

为不同的方法配置不同的action,通过method属性指定调用的方法。
缺点:表单多时,用户在填写表单时不知道需要调用哪个方法处理(不知道填写哪个表单),代码量较大。
action类的不同方法:

public String admin() {
	return "ADMIN";
}
public String user() {
	return "USER";
}

struts.xml文件配置,指定了method方法:

<action name="user" class="com.action.indexAction" method="user">
	<result name="USER">/user.jspresult>
action>
<action name="admin" class="com.action.indexAction" method="admin">
	<result name="ADMIN">/admin.jspresult>
action>

表单也不同:

<form action="user" method="post">
	<input type="submit" value="user登录">
form>
<form action="admin" method="post">
	<input type="submit" value="admin登录">
form>
动态方法二 !方法名

用户在填写表单时传递方法名。

  1. 首先要开启动态方法调用功能(默认关闭)
    在配置文件struts.xml中,改变常量struts.enable.DynamicMethodInvocation = true
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>

这个常量的位置:
struts2三大动态调用_第1张图片
2. 配置文件不指定方法名

<action name="login" class="com.action.indexAction">
	<result name="USER">/user.jspresult>
	<result name="ADMIN">/admin.jspresult>
action>
  1. 表单提交指定方法
    form的action属性为“action名!方法名”
<form action="login!user" method="post">
	<input type="submit" value="登录">
form>
动态方法三 通配符方法调用

在配置文件中,设置action的name属性值包含通配符*,通过这个通配符指定需要调用的方法,第一个通配符*就是{1}的值。

<action name="login-*" class="com.action.indexAction" method={1}>
	<result name="USER">/user.jspresult>
	<result name="ADMIN">/admin.jspresult>
action>

表单提交的action值,将配置文件action的name值中*换为方法名即可:

<form action="login-admin" method="post">
	<input type="submit" value="登录">
form>

你可能感兴趣的:(struts2学习)