Struts 2的DispatchAction功能例题
在Struts 2中,所有的动作(action)都默认带有DispatchAction功能。要使用此功能,我们只需创建与execute方法类似,只有名称改变的方法。
在UserAction类中包含所有和用户有关联的功能,比如:addUser(), updateUser()和deleteUser()。
- package vaannila;
- import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport{
- private String message;
- public String execute()
- {
- message = "Inside execute method";
- return SUCCESS;
- }
- public String add()
- {
- message = "Inside add method";
- return SUCCESS;
- }
- public String update()
- {
- message = "Inside update method";
- return SUCCESS;
- }
- public String delete()
- {
- message = "Inside delete method";
- return SUCCESS;
- }
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- }
我们需要指定动作(action)映射,在动作(action)类中的哪个方法被调用。在动作(action)类中,需要为单独的动作(action)映射创建相应的方法。下面是struts.xml文件中的动作(action)映射:
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="default" extends="struts-default">
- <action name="User" class="vaannila.UserAction">
- <result name="success">/success.jsp</result>
- </action>
- <action name="addUser" method="add" class="vaannila.UserAction">
- <result name="success">/success.jsp</result>
- </action>
- <action name="updateUser" method="update" class="vaannila.UserAction">
- <result name="success">/success.jsp</result>
- </action>
- <action name="deleteUser" method="delete" class="vaannila.UserAction">
- <result name="success">/success.jsp</result>
- </action>
- </package>
- </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的内容:
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <%@taglib uri="/struts-tags" prefix="s" %>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- </head>
- <body>
- <s:form action="User" >
- <s:submit />
- <s:submit action="addUser" value="Add" />
- <s:submit action="updateUser" value="Update" />
- <s:submit action="deleteUser" value="Delete" />
- </s:form>
- </body>
- </html>
下面是运行的结果。
当用户点击Add按钮,UserAction类中的addUser()方法将被执行,并将结果显示给用户。