首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

范例讲解DispatchAction和LookupDispatchAction

2012-10-28 
实例讲解DispatchAction和LookupDispatchAction注意:以下两个例子在调试的过程中用的是同一个form和struts

实例讲解DispatchAction和LookupDispatchAction

注意:以下两个例子在调试的过程中用的是同一个form和struts-config.xml,在调试的过程中DispatchAction是不用资源文件ApplicationResources.properties的,而LookupDispatchAction是要用到ApplicationResources.properties

先来说说DispatchAction,网上的许多例子都是和超链接来做的,其实用DispatchAction用按钮也是可以实现的,来看例子吧!

UserManagement.jsp

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><html><head><title>DispatchAction Example - viralpatel.net</title></head><body><h2>User Management (DispatchAction Example)</h2><font color="black"><h3>用struts标签的方法</h3> </font><html:form action="/user" method="post"><html:text property="userName" /><html:submit property="method" value="create" /><html:submit property="method" value="delete" /></html:form><font color="black"><h3>不用struts标签的方法</h3> </font><form action="/struts_action_test/user.do" method="post"><input type="text" name="userName"/><input type="submit" name="method" value="create"/><input type="submit" name="method" value="delete"/></form><font color="blue"><h3>${message }</h3> </font> 现有以下用户:<c:forEach var="numArray" items="${num}"><table><tr><td><c:out value="${numArray}" /></td></tr></table></c:forEach></body></html>

?UserManagementAction

package com.zgxr.struts;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;public class UserManagementAction extends DispatchAction {// 用于存放添加的用户List list = new ArrayList();public ActionForward create(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginActionForm loginActionForm = (LoginActionForm) form;// 将新添加的用户放入listlist.add(loginActionForm.getUserName());request.setAttribute("message", "User created successfully" + ":"+ "当前用户数量为:" + list.size());request.setAttribute("num", list);return mapping.findForward("success");}public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginActionForm loginActionForm = (LoginActionForm) form;//将提交上来的用户从List中删除list.remove(loginActionForm.getUserName());request.setAttribute("message", "User deleted successfully" + ":"+ "当前用户数量为:" + list.size());request.setAttribute("num", list);return mapping.findForward("success");}}

LoginActionForm:

package com.zgxr.struts;import org.apache.struts.action.ActionForm;public class LoginActionForm extends ActionForm {// 定义两个变量,这两个值与页面上的html:text的property的值相对应private int numOne;private int numTwo;private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getNumOne() {return numOne;}public void setNumOne(int numOne) {this.numOne = numOne;}public int getNumTwo() {return numTwo;}public void setNumTwo(int numTwo) {this.numTwo = numTwo;}}

?

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config><form-beans><form-bean name="loginActionForm"type="com.zgxr.struts.LoginActionForm"></form-bean></form-beans><action-mappings><action path="/user" parameter="method" name="loginActionForm"type="com.zgxr.struts.UserManagementAction"><forward name="success" path="/UserManagement.jsp" /><forward name="failure" path="/UserManagement.jsp" /></action><action path="/test" name="loginActionForm" scope="request"parameter="action" type="com.zgxr.struts.TestAction"input="/operation.jsp"><forward name="success" path="/operation.jsp" /><forward name="failure" path="/operation.jsp" /></action></action-mappings><message-resources parameter="ApplicationResources" /></struts-config>

?

好了把以上这些拷下来试试吧,下面我们来看看LookupDispatchAction

operation.jsp

%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%><%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>LookupDispatchAction Example - viralpatel.net</title></head><body><h2>User Management (LookupDispatch Action Example)</h2>              用struts标签的方法<html:form action="/test" method="post"><html:text property="numOne"/><html:text property="numTwo"/><html:submit property="action"><bean:message  key="button.sum"/></html:submit><html:submit property="action"><bean:message key="button.minus"/></html:submit><html:submit property="action"><bean:message key="button.multiply"/></html:submit><html:submit property="action"><bean:message key="button.divide"/></html:submit></html:form>               不用struts标签的方法              <form name="loginActionForm" method="post" action="/struts_action_test/test.do><input type="text" name="numOne"/><input type="text" name="numTwo"/><input type="submit" name="action" value="sum"/><input type="submit" name="action" value="minus"><input type="submit" name="action" value="multiply"/><input type="submit" name="action" value="divide"/></form></body></html>

?

?

TestAction:

package com.zgxr.struts;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.LookupDispatchAction;public class TestAction extends LookupDispatchAction {@Override//用于关联按键和方法protected Map getKeyMethodMap() {Map map = new HashMap();//如果按钮标题的key为button.sum. 则提交该按钮时对应sum方法map.put("button.sum", "sum");//如果按钮标题的key为button.minus. 则提交该按钮时对应minus方法map.put("button.minus", "minus");//如果按钮标题的key为button.multiply. 则提交该按钮时对应multiply方法map.put("button.multiply", "multiply");//如果按钮标题的key为button.divide. 则提交该按钮时对应divide方法map.put("button.divide", "divide");return map;}public ActionForward sum(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//将form转变成提交时用到的loginActonFormLoginActionForm loginActionForm = (LoginActionForm) form;//计算加法int num = loginActionForm.getNumOne() + loginActionForm.getNumTwo();request.setAttribute("action", num);return mapping.findForward("success");}public ActionForward minus(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//将form转变成提交时用到的loginActonFormLoginActionForm loginActionForm = (LoginActionForm) form;//计算减法int num = loginActionForm.getNumOne() - loginActionForm.getNumTwo();request.setAttribute("action", num);return mapping.findForward("success");}public ActionForward multiply(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//将form转变成提交时用到的loginActonFormLoginActionForm loginActionForm = (LoginActionForm) form;//计算乘法int num = loginActionForm.getNumOne() * loginActionForm.getNumTwo();request.setAttribute("action", num);return mapping.findForward("success");}public ActionForward divide(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//将form转变成提交时用到的loginActonFormLoginActionForm loginActionForm = (LoginActionForm) form;//计算除法int num = loginActionForm.getNumOne() / loginActionForm.getNumTwo();request.setAttribute("action", num);return mapping.findForward("success");}}

?

?

ApplicationResources.properties

button.sum=sumbutton.minus=minusbutton.multiply=multiplybutton.divide=divide

好了就这么多了哦忘了web.xml了

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>application</param-name><param-value>ApplicationResources</param-value></init-param><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/UserManagement.jsp</welcome-file></welcome-file-list></web-app>

?

大家要注意了在不用struts标签的时候,form提交的路径要注意具体见以上代码

?

?

?

?

热点排行