struts2中的Action(二)

. 动态方法调用

一个Action包含多个业务处理功能,根据用户请求表单的不同,调用不同的方法,struts1DispatchAction相似.

 

首先要设置:

struts.enable.DynamicMethodInvocation=true 设置支持动态方法调用,默认为true,可以不用设

 

Action与配置不变:

 

public class LogonAction {
	private String userName;
	private String userPwd;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserPwd() {
		return userPwd;
	}
	public void setUserPwd(String userPwd) {
		this.userPwd = userPwd;
	}
	
	public String login() throws Exception{
		return "succee";
	}
}

 

 

Action配置

 

<action name="logon" class="com.LogonAction">
            <result name="succee">/logon/welcome.jsp</result>
            <result name="input">/logon/logon.jsp</result>
</action>

 

 

<form action="logon!login.action" method="post">

 

Logon!logon.action:意思是提交表单给 logon.actionlogin()方法来处理

 

 

 

使用通配符

 

1.
<action name="user*" class="com.UserAction" method="{1}">
       <result name="succee">/logon/welcome.jsp</result>
       <result name="input">/logon/logon.jsp</result>
</action>

比如当用户请求userLogon时,会被UserAction类处理,method{1}中{1}值为name属性中第一个*的值.

 

2.

<action name="*Action_*" class="com.{1}" method="{2}">
        <result name="succee">/logon/welcome.jsp</result>
        <result name="input">/logon/logon.jsp</result>
 </action>

 

 

当用户请求UserAction_logon时,会被UserAction类的logon方法处理
与上面一样,class中{1}的值为name属性中第一个*的值,也就是UserAction,{2}的值为name属性中第二个*的值,即为logon

.跟据请求参数觉定结果

<action name="logon" class="com.LogonAction">
            <result name="succee" type="redirect">/logon/welcome.jsp?userName=${userName}</result>
            <result name="input">/logon/logon.jsp</result>
</action>

 

 

 

Welcome.jsp
<body>
  request.getParamter:<%=request.getParameter("userName") %>
</body>

${属性名} 就是action中的属性值.
在welcome.jsp中可以通过request.getparamter得到userName的值

你可能感兴趣的:(jsp,struts)