`
icyheart
  • 浏览: 782844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实例讲解DispatchAction和LookupDispatchAction

    博客分类:
  • J2EE
阅读更多

注意:以下两个例子在调试的过程中用的是同一个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;
		// 将新添加的用户放入list
		list.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转变成提交时用到的loginActonForm
		LoginActionForm 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转变成提交时用到的loginActonForm
		LoginActionForm 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转变成提交时用到的loginActonForm
		LoginActionForm 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转变成提交时用到的loginActonForm
		LoginActionForm loginActionForm = (LoginActionForm) form;
		//计算除法
		int num = loginActionForm.getNumOne() / loginActionForm.getNumTwo();
		request.setAttribute("action", num);
		return mapping.findForward("success");
	}
}

 

 

ApplicationResources.properties

button.sum=sum
button.minus=minus
button.multiply=multiply
button.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提交的路径要注意具体见以上代码

 

 

 

 

1
0
分享到:
评论

相关推荐

    DispatchAction、LookupDispatchAction、SwitchAction的应用

    ### DispatchAction、LookupDispatchAction、SwitchAction 的应用详解 #### 一、DispatchAction 的应用 **DispatchAction** 是 Struts 框架中一个非常有用的类,它位于 `org.apache.struts.actions` 包中。其核心...

    DispatchAction实例

    在实际的Web应用程序开发中,通常一个URL对应一个Action,而`DispatchAction`则允许一个Action处理多个不同的请求,每个请求映射到Action中的不同方法,提高了代码的可维护性和组织性。 `DispatchAction`的核心机制...

    LookupDispatchAction 是使用方法

    public class LookupDispatchAction extends DispatchAction { public ActionForward method1(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ...

    DispatchAction

    在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种...在项目中,`DispathAction.ppt`可能包含关于`DispatchAction`的详细讲解和示例,而`dispacthertest`可能是与这两个组件相关的测试代码或示例应用。

    struts中dispatchAction用法

    ActionServlet根据配置的ActionMapping来找到对应的DispatchAction实例,然后解析请求中的参数,比如`action`或`method`,这个参数就是用来指定要执行的子方法的名称。 以下是一个简单的DispatchAction使用步骤: ...

    struts1深入学习

    struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例

    struts DispatchAction

    Struts DispatchAction是一个在Struts框架中非常重要的概念,它是一种控制器组件,用于处理来自用户的...然而,随着技术的发展,如Struts2的出现,开发者可以选择更现代和模块化的解决方案来代替传统的DispatchAction。

    Struts中等同于DispatchAction类方法

    Struts框架是Java Web开发中一个非常重要的MVC(Model-View-Controller)框架,它为开发者提供了一种结构化的方式来组织和管理应用程序。在早期的Struts版本中,`DispatchAction`类是一个核心组件,它允许我们通过...

    Struts(DispatchAction) + 存储过程 => 实现分页效果

    在这个场景中,我们将探讨如何结合DispatchAction和存储过程来实现分页效果。 首先,理解分页的基本概念。分页是当数据量过大时,为提高用户体验,将数据分成若干部分逐页展示的一种技术。在Web应用中,用户可以逐...

    SSH整合继承DispatchAction的简单例子

    同时,Spring的配置文件(applicationContext.xml)会定义Bean,包括Action类的实例,以及可能的数据源和事务管理器。Hibernate的配置(hibernate.cfg.xml)则包含了数据库连接信息和实体映射。 在实际开发中,你...

    struts+oracle实现DispatchAction类

    在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...

    Struts 之 DispatchAction

    1. **配置struts-config.xml**:首先,在`struts-config.xml`中为`DispatchAction`创建一个配置项,指定它的类路径和映射URL。例如: ```xml ``` 2. **实现DispatchAction**:接下来,你需要创建一个继承...

    struts LookupdispathAction类使用实例

    - `LookupDispatchAction` 实例化后,会根据配置文件中的 `&lt;action&gt;` 元素寻找匹配的方法。不同于常规的 `DispatchAction`,它不是通过请求参数来选择执行哪个方法,而是基于请求的Action路径的最后一个部分。 - ...

    利用struts标签,dispatchAction,实现增删改查

    在本教程中,我们将深入探讨如何利用Struts的标签库和DispatchAction来实现数据的增删改查操作,这对于初学者来说是一个非常实用的学习主题。 首先,`DispatchAction`是Struts中的一个特殊Action类,它允许我们根据...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Struts2常用标签&DispatchAction.rar

    03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar

    Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性

    Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性

    echart_API文档与实例

    ECharts API文档与实例是学习和掌握ECharts的关键资源,帮助开发者实现各种复杂的可视化需求。 一、ECharts API介绍 ECharts的API主要分为两类:配置项(Options)和方法(Methods)。配置项用于定义图表的样式和...

    Struts+Spring+Hibernate开发实例 (SSH整合)

    为了简化Action和ActionForm的管理,采用DynaActionForm(DynaValidatorForm)和DispatchAction,以及动态验证框架。此外,使用Tiles来构建页面布局,自定义标签处理分页和身份验证,使得UI的构建更加灵活。 2. ...

Global site tag (gtag.js) - Google Analytics