今天在看一个 Struts 代码时,发现 Action 类继承的父类为 DispatchAction ,于是找了找资料研究了下 DispatchAction 类,现总结如下:
DispatchAction 是 Struts1.1 中的一个类,它的父类是 Action ,它的作用就在于将多个功能相似的业务逻辑放在同一个 Action 中实现,各个业务逻辑通过传入不同的参数来决定执行哪个操作方法
通常在 Action 中我们都是通过 execute 方法来处理业务逻辑及页面转向,一个 Action 只能完成一种业务逻辑处理 , 当然我们也可以在页面插入一个隐藏的变量,然后在 Action 的 execute 方法中通过判断这个隐藏变量的值来决定调用哪个方法,也可以达到同一个 Action 来处理多种业务逻辑,可是这样的话想一想肯定会造成页面代码的增加及影响页面代码的可读性 .
看一看 DispatchAction 是如何实现的
比如对一个用户对象来说,存在增加,删除,修改的操作,首先创建一个继承 DispatchAction 的 UserAction 类,
然后将 addUser,delUser,updateUser 这些方法写在这个类里面,代码如下:
package com.why.struts.action;
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;
import com.why.Constant;
import com.why.struts.form.AddUserForm;
import com.why.struts.form.LoginForm;
public class UserAction extends DispatchAction
{
public ActionForward addUser (ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response) throws Exception
{
// 增加用户业务的逻辑
return mapping.findForward(Constant. FORWARD_ADD );
}
public ActionForward delUser(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response) throws Exception
{
// 删除用户业务的逻辑
return mapping.findForward(Constant. FORWARD_SUCCESS );
}
public ActionForward updateUser(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response) throws Exception
{
// 更新用户业务的逻辑
return mapping.findForward(Constant. FORWARD_SUCCESS );
}
}
如何实现这些不同方法的调用呢 ? 那就是要在 struts-config.xml 文件中更改 action-mapping 的配置,如下:
< action-mappings >
< action
attribute = "addUserForm"
input = "/addUser.jsp"
name = "addUserForm"
parameter="method"
path = "/addUser"
scope = "request"
type="com.why.struts.action.UserAction" >
</ action >
< action
attribute = "delUserForm"
input = "/delUser.jsp"
name = "delUserForm"
parameter="method"
path = "/delUser"
scope = "request"
type="com.why.struts.action.UserAction" />
< action
attribute = "updateUserForm"
input = "/updateUser.jsp"
name = "updateUserForm"
parameter="method"
path = "/updateUser"
scope = "request"
type="com.why.struts.action.UserAction" />
</ action-mappings >
可以看到每个 <action /> 中都增加了 parameter=" " 项,这个值可以随便命名,如上面命名为 metho d ,用来接收页面传来的参数
如下为页面的提交, 注意:对应 <action /> 中的 parameter 值 , 对应 UserAction 类中的方法名
AddUser.jsp
<html:link href="addUser.do?method=addUser">Add User</html:link>
DelUser.jsp
<html:link href="delUser.do?method=delUser">Add User</html:link>
UpdateUser.jsp
<html:link href="updateUser.do?method=updateUser">Add User</html:link>
分享到:
相关推荐
以下是一个简单的DispatchAction使用步骤: 1. **创建DispatchAction类**:首先,你需要继承自org.apache.struts.actions.DispatchAction,创建一个新的Action类。在这个类中,你需要定义一系列处理特定业务的方法...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。
在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种常见的控制器组件,用于处理用户请求。它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们...
下面我们将详细探讨`DispatchAction`的使用步骤和关键点: 1. **创建子类**:首先,你需要创建一个继承自` DispatchAction `的Java类。在这个类中,你可以定义自己的业务逻辑方法,比如`executeSave()`、`...
DispatchAction 的 parameter 属性是给 DispatchAction 使用的,你的类要继承 DispatchAction 类,而不是普通的 Action,Action 只会执行 execute 方法,DispatchAction 会根据 parameter 的值执行特定的方法。...
使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...
总结来说,"Struts中等同于DispatchAction类方法"是一种在不直接使用`DispatchAction`基类的情况下,通过前端传递方法名并在后端使用反射调用相应方法的技术,以实现多请求映射到单个Action类的多个方法。...
**1.1 为什么要使用 DispatchAction** 在传统的 Struts 应用中,每一个业务逻辑操作往往都需要创建一个单独的 Action 类。例如,在一个文章管理系统中,可能需要为文章的添加、查看和搜索等功能分别编写 `...
以下是对文件上传和DispatchAction使用的一些详细说明: 1. **文件上传流程**: - **表单提交方式**:文件上传必须使用HTTP的POST方法,因为GET方法无法处理大容量的数据,而文件通常较大。 - **表单编码**:`...
5. **在JSP页面上展示**:最后,在JSP页面(如paging.jsp)上,你可以使用JSTL或其他标签库来遍历分页数据,并提供导航链接,让用户可以跳转到其他页码。 总结,通过结合Struts的DispatchAction和存储过程,我们...
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助...在此谢谢各位!!
在本篇文章中,我们将深入探讨`DispatchAction`的工作原理、优点以及如何在实际项目中使用。 `DispatchAction`是Struts提供的一个扩展自`Action`类的预定义动作,它的主要目的是通过不同的方法来处理来自客户端的...
03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar
Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性
2. **DispatchAction的使用**: - **配置Action**:在struts-config.xml中,我们需要定义DispatchAction,指定其对应的类以及各个请求参数与方法的映射关系。例如: ```xml <param name="operation">add `...
这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现多请求分发的功能。 首先,让我们深入理解SSH框架的核心功能。Spring是一个强大的依赖注入...
本文将深入解析Struts中的控制器组件,特别是DispatchAction的使用。 在Struts框架中,控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截所有HTTP请求,并根据配置文件(struts-...
6. **与现代框架对比**:虽然DispatchAction在早期的Struts应用中广泛使用,但在Spring MVC和Play Framework等现代Java Web框架中,这种模式已被更简洁、可扩展的方式所取代,如使用注解驱动的方法映射。 7. **学习...
Struts1.2是一个经典的Java Web框架,它在企业级应用开发中被广泛使用,尤其在Web MVC(Model-View-Controller)设计模式的应用上。本示例是基于Struts1.2实现的一个计算器程序,旨在帮助初学者理解Struts框架的工作...