Struts2的动态方法调用 类似于Struts1的dispatchAction 具体用法如下:
第一种: Action名 + !+ 方法名 + .action
struts.xml
<constant name="struts.devMode" value="true" />
<package name="dmi" namespace="/dmi" extends="struts-default">
<action name="LoginAction" class="com.accp.struts2.biz.LoginAction">
<result>
/dmi/dmi_result.jsp
</result>
</action>
</package>
访问页面: 注意此处的action的路径 LoginAction!regist.action
<form action="../dmi/LoginAction!regist.action" method="post">
name:<input type="text" name="uname"/><br/>
age:<input type="text" name="uage"/><br/>
<input type="submit" value="go"/>
</form>
第二种: 在Action节点中通过method属性指定执行的方法
struts.xml
<package name="dmi" namespace="/dmi" extends="struts-default">
通过method属性指定要调用的方法名为login
<action name="LoginAction" class="com.accp.struts2.biz.LoginAction" method="Login" >
<result>
/dmi/dmi_method_result.jsp
</result>
</action>
</package>
访问页面:
<form action="../dmi/LoginAction.action" method="post">
name:<input type="text" name="uname"/><br/>
age:<input type="text" name="uage"/><br/>
<input type="submit" value="go"/>
</form>
执行类:
public class LoginAction extends ActionSupport {
//..........此处省略属性和方法
public String Login() throws Exception{
System.out.println("call login method ======" + getUname());
return SUCCESS;
}
}
第三种: 使用通配符形式完成动态调用
struts.xml
<package name="dmi" namespace="/dmi" extends="struts-default">
此处用*号指定任意形式的Action,比如 LoginAction
method={1} 此处的{1}指定的是第一个*号 也就是 Login
<action name="*Action" class="com.accp.struts2.biz.LoginAction" method="{1}">
<result>
/dmi/dmi_wildcard_result.jsp
</result>
</action>
</package>
访问页面:
<form action="../dmi/LoginAction.action" method="post">
name:<input type="text" name="uname"/><br/>
age:<input type="text" name="uage"/><br/>
<input type="submit" value="go"/>
</form>
执行类:
public class LoginAction extends ActionSupport {
//..........此处省略属性和方法
public String Login() throws Exception{
System.out.println("call login method ======" + getUname());
return SUCCESS;
}
}