`

struts2 action

阅读更多

关键字: struts2 action

. 动态方法调用

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

 

首先要设置:

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

 

Action与配置不变:

 

Java代码 复制代码
  1. public class LogonAction {   
  2.     private String userName;   
  3.     private String userPwd;   
  4.     public String getUserName() {   
  5.         return userName;   
  6.     }   
  7.     public void setUserName(String userName) {   
  8.         this.userName = userName;   
  9.     }   
  10.     public String getUserPwd() {   
  11.         return userPwd;   
  12.     }   
  13.     public void setUserPwd(String userPwd) {   
  14.         this.userPwd = userPwd;   
  15.     }   
  16.        
  17.     public String login() throws Exception{   
  18.         return "succee";   
  19.     }   
  20. }  
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配置

 

Xml代码 复制代码
  1. <action name="logon" class="com.LogonAction">  
  2.             <result name="succee">/logon/welcome.jsp</result>  
  3.             <result name="input">/logon/logon.jsp</result>  
  4. </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.
Xml代码 复制代码
  1. <action name="user*" class="com.UserAction" method="{1}">  
  2.        <result name="succee">/logon/welcome.jsp</result>  
  3.        <result name="input">/logon/logon.jsp</result>  
  4. </action>  
<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.

Xml代码 复制代码
  1. <action name="*Action_*" class="com.{1}" method="{2}">  
  2.         <result name="succee">/logon/welcome.jsp</result>  
  3.         <result name="input">/logon/logon.jsp</result>  
  4.  </action>  
<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

.跟据请求参数觉定结果

Xml代码 复制代码
  1. <action name="logon" class="com.LogonAction">  
  2.             <result name="succee" type="redirect">/logon/welcome.jsp?userName=${userName}</result>  
  3.             <result name="input">/logon/logon.jsp</result>  
  4. </action>  
<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的值

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics