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>
分享到:
相关推荐
Struts是Java Web开发中的一款经典MVC框架,它的核心组件之一是DispatchAction,这个组件在处理用户请求时起到了至关重要的作用。DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。
Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性
使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...
1. **Struts标签库**: Struts标签库提供了丰富的HTML和逻辑标签,使得开发者可以更方便地在JSP页面中进行UI开发。例如,`<s:textfield>`用于创建输入字段,`<s:submit>`用于提交表单,而`<s:iterator>`则用于遍历...
总的来说,`Struts 之 DispatchAction`是Struts框架中提高代码组织和复用性的一个重要工具。通过合理地利用`DispatchAction`,开发者可以更高效地管理控制器层的代码,从而提升整体项目质量。在实际开发中,应结合...
总结来说,"Struts中等同于DispatchAction类方法"是一种在不直接使用`DispatchAction`基类的情况下,通过前端传递方法名并在后端使用反射调用相应方法的技术,以实现多请求映射到单个Action类的多个方法。...
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar
1. **配置Struts DispatcherAction**:在Struts的配置文件(struts-config.xml)中,我们需要定义一个DispatchAction,每个方法对应一个具体的业务操作。例如,我们可以定义两个方法,一个用于获取总记录数,另一个...
在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种常见的控制器组件,用于处理用户请求。它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们...
Struts1可以集成C3P0等连接池,但文档中提到的问题“数据库连接池缺DBCP三个包”指的是缺少Apache DBCP连接池的相关包,需要添加至项目中才能正常使用。 **5.2 多模块操作** - **多模块**:在一个项目中可以有多个...
4. **DispatchAction**:Struts1中的一个特殊Action,支持方法调度。 5. **FormFile**:用于封装文件上传数据的对象。 6. **HttpServletRequest** 和 **HttpServletResponse**:分别代表HTTP请求和响应对象。 #### ...
### Struts1.x 技术课程讲解 #### 一、Struts1.x 概述 **Struts1.x** 是一款基于 Java Servlet 和 JSP 技术的企业级 Web 应用开发框架,它实现了 Model-View-Controller (MVC) 设计模式。此框架旨在简化 Web 应用...
5. DispatchAction:Struts1提供的一种特殊Action,它将一个请求分发到多个子方法,提高代码可维护性。 二、主要组件详解 1. Controller:在Struts1中,Controller由StrutsServlet和ActionServlet实现,它们负责...
- DispatchAction:Struts1.x中的一种扩展Action,可以处理多个请求方法,每个方法对应一个特定的操作。 - ActionForm:用户的输入数据会被封装到ActionForm对象中,然后传递给Action处理。 - Action Mapping:...
1. **创建子类**:首先,你需要创建一个继承自` DispatchAction `的Java类。在这个类中,你可以定义自己的业务逻辑方法,比如`executeSave()`、`executeDelete()`等。 ```java public class MyDispatchAction ...
Struts1作为早期版本,虽然现在已经被Struts2所取代,但仍然在很多老项目中广泛使用,对于理解Web应用架构和MVC设计模式有着重要的学习价值。本篇文章将深入探讨Struts1框架的基本用法、例子以及需要注意的事项。 ...
struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例