DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。
与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。
这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。
要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。
对每个要提供的业务方法必须有特定的方法标识即识别标志。
本文将着重来理解下org.apache.struts.actions.DispatchAction类。
在有些时候一个Action可能有多种操作,比如查询,增加,删除等,都集中在了一个Action中,每个操作都会被封装在一个独立的方法中,此时需要使用某个变量来区分Action接收到的请求需要执行哪个操作,根据操作类型再去调用相应的方法。
DispatchAction类
DispatchAction类为我们实现了这个根据请求动态的分发业务给不同的方法。
比如某个Action地址为”hello.do”,当访问”hello.do?method=add”时,将调用Action类中的add方法;访问”hello.do?method=show”时,将调用Action类中show方法。
这里的请求路径参数”?method=add”,
前者参数名”method”需要在struts-config.xml配置文件中的action元素中使用parameter属性定义,
后者参数值对应着Action类中的同名方法。
我们需要将自己的Action继承DispatchAction类,DispacthAction类又是继承Action类的。然后需要声明自己的业务处理方法,
public class HelloAction extends DispatchAction { public ActionForward add (ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response) { System.out.println("HelloAction.add()"); return null; } public ActionForward show (ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response) { System.out.println("HelloAction.show()"); return null; } }
这里需要注意的是,自定义的业务处理方法的格式为:
public ActionForward methodName (ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response)
{
…
}
方法的返回类型与方法参数都是固定的,方法名可以自定义。
对应的struts-config.xml文件中action元素:
<action attribute="helloForm" input="/index.jsp" name="helloForm" path="/hello" scope="request" type="com.yourcompany.struts.action.HelloAction" cancellable="yes" parameter="method" />
最后一个parameter属性是关键。
当访问 “/hello.do?method=add”时,将调用add方法,输出”HelloAction.add()”
当访问”/hello.do?method=show”时,将调用show方法,输出”HelloAction.show()”
相关推荐
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
`DispatchAction`依赖于请求参数进行方法调用,而`MappingDispatchAction`则提供更灵活的映射规则,通过XML配置文件实现请求到方法的映射。开发者可以根据项目需求选择适合的Action实现,以提高代码的可读性和可维护...
- DispatchAction是可复用的Action,允许在一个类中定义多个业务方法,减少了Action类数量,提高了代码组织。通过特定的方法签名(如addItem()、deleteItem())实现不同业务操作。 了解以上知识点,有助于准备...
- **Action**: 这是业务逻辑的入口点,它实现了`execute()`方法,接收由RequestProcessor传递过来的请求,执行相应的业务操作,并返回ActionForward对象指示下一步的动作。 - **ActionMapping**: 用于映射URL到...
在早期的Struts版本中,`DispatchAction`类是一个核心组件,它允许我们通过单一的Action类处理多个请求,通过在请求URL中指定不同的方法名来调用不同的业务逻辑。 标题提到的"Struts中等同于DispatchAction类方法...
ActionServlet根据配置的ActionMapping来找到对应的DispatchAction实例,然后解析请求中的参数,比如`action`或`method`,这个参数就是用来指定要执行的子方法的名称。 以下是一个简单的DispatchAction使用步骤: ...
DispatchAction是Struts框架中的一个动作类,用于处理用户的请求并转发到相应的业务逻辑。在这个场景中,我们将探讨如何结合DispatchAction和存储过程来实现分页效果。 首先,理解分页的基本概念。分页是当数据量过...
DispatchAction的工作原理是基于请求参数来决定调用哪个业务处理方法。在创建DispatchAction的子类时,你需要重写`execute`方法,并在其中添加一系列的`case`语句或`if-else`结构,每个条件分支对应一个不同的请求...
首先,`DispatchAction`是Struts中的一个特殊Action类,它允许我们根据请求参数的不同,调用不同的方法来处理请求。这种设计使得Action类可以更加模块化,每个方法对应一种特定的操作,如添加、删除、更新或查询。 ...
在Struts框架中,`DispatchAction`是一个非常重要的组件,它是Struts提供的一个扩展自`Action`类的抽象类,主要用于处理多个请求方法的情况。在实际的Web应用程序开发中,通常一个URL对应一个Action,而`...
DispatchAction会根据请求参数自动选择对应的方法执行,减少了Action类的数量,简化了代码结构。 综上所述,Struts是一个强大且广泛使用的Java Web框架,它的设计思想和组件在现代Web应用开发中仍然具有借鉴意义。...
**SwitchAction** 的基本思想是提供一种更灵活的方式来根据请求参数执行不同的业务逻辑。 **3.1 SwitchAction 的实现方式** **SwitchAction** 可能不会直接存在于 Struts 或其他主流框架中,但它可以通过自定义的...
如果地图数据不在初始化选项中,你可能需要先加载数据,然后通过`myChart.dispatchAction`更新地图。 5. **地图交互与动态效果**: ECharts地图支持各种交互功能,如缩放、平移、鼠标悬浮显示数据等。你可以根据...
`DispatchAction`通过参数化的方法名来实现这一目标,即根据HTTP请求中的参数值来选择执行哪个方法。 在描述中提到的"add"可能指的是一个特定的操作,比如添加数据到数据库。在`DispatchAction`的上下文中,这可能...
ActionForm是用于封装请求参数的类,而Action则是执行特定业务逻辑的类。推荐使用Struts的DispatchAction,因为它可以减少Spring配置中的工作量,提高代码的可维护性。 其次,Hibernate是一个强大的对象关系映射...
Struts+Spring+Hibernate实现上传下载 本文将围绕SSH文件上传下载的主题,向您... 代码 8 业务接口实现类之save() 1. … 2. public class FileServiceImpl 3. implements FileService 4. { 5. private TfileDAO ...
13.8.12 统计调查结果实现类SetSurveyChildCountImpl.java 13.9 编写网上调查系统的控制器类 13.9.1 登录控制器类LoginAction.java 13.9.2 注册控制器类RegeditAction.java 13.9.3 设定调查题目控制器类SurveyAction...
- **DispatchAction**:一种特殊的 Action 类,可以将不同的 actionName 分派到不同的方法中处理。 - **MappingDispatchAction**:允许开发者为每个请求参数定义不同的处理方法。 - **LookUpDispatchAction**:与...
13.8.12 统计调查结果实现类SetSurveyChildCountImpl.java 13.9 编写网上调查系统的控制器类 13.9.1 登录控制器类LoginAction.java 13.9.2 注册控制器类RegeditAction.java 13.9.3 设定调查题目控制器类SurveyAction...
这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现多请求分发的功能。 首先,让我们深入理解SSH框架的核心功能。Spring是一个强大的依赖注入...