【转】Struts 2的DispatchAction功能例题

Struts 2的DispatchAction功能例题

 

在Struts 2中,所有的动作(action)都默认带有DispatchAction功能。要使用此功能,我们只需创建与execute方法类似,只有名称改变的方法。

 

在UserAction类中包含所有和用户有关联的功能,比如:addUser(), updateUser()和deleteUser()。

 

 

[java]   view plain copy
  1. package vaannila;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class UserAction extends ActionSupport{  
  6.   
  7.     private String message;  
  8.       
  9.     public String execute()  
  10.     {  
  11.         message = "Inside execute method";  
  12.         return SUCCESS;       
  13.     }  
  14.       
  15.     public String add()  
  16.     {  
  17.         message = "Inside add method";  
  18.         return SUCCESS;       
  19.     }  
  20.       
  21.     public String update()  
  22.     {  
  23.         message = "Inside update method";  
  24.         return SUCCESS;       
  25.     }  
  26.       
  27.     public String delete()  
  28.     {  
  29.         message = "Inside delete method";  
  30.         return SUCCESS;       
  31.     }  
  32.   
  33.     public String getMessage() {  
  34.         return message;  
  35.     }  
  36.   
  37.     public void setMessage(String message) {  
  38.         this.message = message;  
  39.     }  
  40.   
  41. }  

 

我们需要指定动作(action)映射,在动作(action)类中的哪个方法被调用。在动作(action)类中,需要为单独的动作(action)映射创建相应的方法。下面是struts.xml文件中的动作(action)映射:

 

[xhtml]   view plain copy
  1. <!DOCTYPE struts PUBLIC  
  2. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  3. "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4.   
  5. <struts>  
  6.     <package name="default" extends="struts-default">  
  7.         <action name="User" class="vaannila.UserAction">  
  8.             <result name="success">/success.jsp</result>  
  9.         </action>        
  10.         <action name="addUser" method="add" class="vaannila.UserAction">  
  11.             <result name="success">/success.jsp</result>  
  12.         </action>  
  13.         <action name="updateUser" method="update" class="vaannila.UserAction">  
  14.             <result name="success">/success.jsp</result>  
  15.         </action>  
  16.         <action name="deleteUser" method="delete" class="vaannila.UserAction">  
  17.             <result name="success">/success.jsp</result>  
  18.         </action>    
  19.     </package>  
  20. </struts>  

 

需要注意的是在所有的动作(action)映射中使用的是同一个动作(action)类。当请求URL是"User",那么UserAction类中的execute()方法将被调用。当请求URL是"addUser",那么UserAction类中的add()方法将被调用。使用action标签的method属性进行设置。update和delete的请求都是类似的。

 

在动作(action)类,为每个单独的动作(action)映射设置方法,在Struts 2中的另外一个特性动态方法调用(Dynamic Method Invocation)也可以实现。在下一篇中我们将说明如何使用它。

 

在index.jsp页面中,我们创建了四个不同的按钮来调用不同的方法。下面是index.jsp的内容:

 

[xhtml]   view plain copy
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <%@taglib uri="/struts-tags" prefix="s" %>  
  5. <html>  
  6.     <head>  
  7.        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  8.        <title>Insert title here</title>  
  9.     </head>  
  10.     <body>  
  11.        <s:form action="User" >  
  12.            <s:submit />  
  13.            <s:submit action="addUser" value="Add" />  
  14.            <s:submit action="updateUser" value="Update" />  
  15.            <s:submit action="deleteUser" value="Delete" />  
  16.        </s:form>  
  17.     </body>  
  18. </html>  

 

下面是运行的结果。

 

当用户点击Add按钮,UserAction类中的addUser()方法将被执行,并将结果显示给用户。

猜你喜欢

转载自gdfdfg-tech.iteye.com/blog/1954355
今日推荐