`
niatwangcong
  • 浏览: 86497 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

struts中的MappingDispatchAction类

阅读更多
 以下内容完全是个人做项目的经验,如果有不对或者遗漏的地方,希望大家共同探讨。
在看struts文档的时候发现了org.apache.struts.action.MappingDispathAction这个类,以前没有见到过去找孙姐姐

的struts的书发现没有提到这个类,估计是写书的时候struts还没有这个类,struts官方提供的资料在
http://struts.apache.org/struts-doc-1.2.x/api/org/apache/struts/actions/MappingDispatchAction.html<wbr style="LINE-HEIGHT: 1.3em"></wbr><wbr>以下是文档内容:

public class <wbr>MappingDispatchAction</wbr></wbr><wbr> extends DispatchAction<wbr style="LINE-HEIGHT: 1.3em"></wbr></wbr><wbr> An abstract <wbr>Action</wbr></wbr><wbr> that dispatches to a public method that is named by the parameter</wbr><wbr style="LINE-HEIGHT: 1.3em"> attribute of the corresponding ActionMapping. This is useful for developers who prefer to combine many related actions into a single Action class.
To configure the use of this action in your struts-config.xml</wbr><wbr style="LINE-HEIGHT: 1.3em"> file, create an entry like this:
   <action path="/saveSubscription"           type="org.example.SubscriptionAction"           name="subscriptionForm"          scope="request"          input="/subscription.jsp"      parameter="method"/>
where 'method' is the name of a method in your subclass of MappingDispatchAction that has the same signature (other than method name) of the standard Action.execute method. For example, you might combine the methods for managing a subscription into a single MappingDispatchAction class using the following methods:
public ActionForward create(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception for which you would create corresponding <action> configurations that reference this class:
  <action path="/createSubscription"           type="org.example.SubscriptionAction"          parameter="create">      <forward name="success" path="/editSubscription.jsp"/>  </action>   <action path="/editSubscription"           type="org.example.SubscriptionAction"          parameter="edit">      <forward name="success" path="/editSubscription.jsp"/>  </action>  <action path="/saveSubscription"           type="org.example.SubscriptionAction"           parameter="save"          name="subscriptionForm"           validate="true"           input="/editSubscription.jsp"           scope="request">      <forward name="success" path="/savedSubscription.jsp"/>  </action>  <action path="/deleteSubscription"           type="org.example.SubscriptionAction"          name="subscriptionForm"          scope="request"          input="/subscription.jsp"          parameter="delete">      <forward name="success" path="/deletedSubscription.jsp"/>  </action>  <action path="/listSubscriptions"           type="org.example.SubscriptionAction"          parameter="list">      <forward name="success" path="/subscriptionList.jsp"/>  </action>
<wbr>NOTE</wbr></wbr><wbr> - Unlike DispatchAction, mapping characteristics may differ between the various handlers, so you can combine actions in the same class that, for example, differ in their use of forms or validation. Also, a request parameter, which would be visible to the application user, is not required to enable selection of the handler method.
<wbr>Since:</wbr></wbr><wbr> Struts 1.2 <wbr>Version:</wbr></wbr><wbr> $Rev: 54929 $ $Date: 2004-10-16 17:38:42 +0100 (Sat, 16 Oct 2004) $ 下面我解释一下:  
<action path="/createSubscription"
<!--注意这里的path-->
          type="org.example.SubscriptionAction"<!--这里是我们自己定一个那个类,这个类有一个方法是create

,如果要调用create方法则在下面的parameter字段中指名同时注意这4个action配置的定义,这里的type都是

SubscriptionAction他和其他的action比如DispatchAction最大的区别都在这里,实际上这里定义了多个action,但

是他们的type都一致,无非是使用parameter字段来区分到底调用那个方法而已-->
          parameter="create">
      <forward name="success" path="/editSubscription.jsp"/>
  </action>
在jsp中,form的调用方法如下:
<html:form action="/createSubscription.do"></html:form>
<html:form action="/editSubscription.do"></html:form>
<html:form action="/saveSubscription.do"></html:form>
<html:form action="/deleteSubscription.do"></html:form>
<html:form action="/listSubscriptions.do"></html:form>
这样就回去执行SubscriptionAction的create方法
那么这种配置和DispatchAction或者LookupDispatchAction有什么区别呢?
最大的区别在于type上,DispatchAction配置给每一个继承它的类有一个<action配置就够了,然后利用parameter方

法来指定调用的不同
下面我们来看看实现同样的方法DispatchAction的配置和使用:
  <action path="/SubscriptionAction"
          type="org.example.SubscriptionAction"
          parameter="method">
      <forward name="success" path="/subscriptionList.jsp"/>
  </action>
在jsp中调用方法如下:
<html:form action="/SubscriptionAction.do?method=create"></html:form>
<html:form action="/SubscriptionAction.do?method=edit"></html:form>
<html:form action="/SubscriptionAction.do?method=save"></html:form>
<html:form action="/SubscriptionAction.do?method=delete"></html:form>
<html:form action="/SubscriptionAction.do?method=list"></html:form>

总结:
MappingDispatchAction为每个不同的处理方法都要在struts-config.xml配置对应的action而DispatchAction

只需要配置一个然后利用给parameter字段赋值来区分。从我做项目的经验来说,使用MappingDispatchAction恐怕是

最方便最直接了,因为它最容易调试。因为根据form提交的action的不同就可以区分不同的方法(例如增加,删除,修

改)但是缺点就是会是配置文件的内容变多,而DispatchAction方法的配置看上去比较简洁,每种方法各有千秋,就看

你怎么用了,具体使用说明还是看struts的官方文档。
分享到:
评论

相关推荐

    Struts中MappingDispatchAction的用法

    Struts中MappingDispatchAction的用法Struts中MappingDispatchAction的用法Struts中MappingDispatchAction的用法

    struts_MappingDispatchAction的使用

    最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...

    MappingDispatchAction一个经典小例子

    总结来说,`MappingDispatchAction`是Struts2框架中的一个实用工具,它增强了Action类的功能,允许我们用一个Action处理多种不同的请求,提升了代码的组织结构和效率。通过配置和编程,我们可以灵活地映射和分发请求...

    struts1.x技术课程讲解.pdf

    1. **Action**:Struts1.x 中的 Action 类负责处理用户请求,执行业务逻辑,并返回一个 ActionForward 对象来控制页面流转。 - **DispatchAction**:一种特殊的 Action 类,可以将不同的 actionName 分派到不同的...

    我的毕设---购物网站

    基于MVC模式,控制层由Struts的MappingDispatchAction组件提供控制流程,业务逻辑和事务管理由javaBean实现,数据库访问使用Hibernate技术,表现层采用JSP组件,增强了系统的健壮性和可扩展性。 分为用户信息管理...

    轻量级J2EE企业应用实战——Struts+Spring+Hibernate整合开发 源码第三部分

    在给出的文件中,我们看到了如`SwitchAction`、`MappingDispatchAction`等Action类,这些都是Struts中用于处理用户请求的核心组件。`SwitchAction`通常用于根据不同的条件或参数选择不同的业务逻辑路径,而`...

    ssh(struts、spring、hibernate)集成

    这是方式二的变体,只需要在Struts配置文件中添加`controller`处理器类,并将`action`标签的`type`恢复为原本的Action全路径名。 ### Spring的作用 Spring作为核心容器,通过IoC/DI管理所有bean的生命周期,包括biz...

    传智播客 struts课程笔记 赖家材

    - **配置文件中的属性**:Struts 配置文件 (`struts-config.xml`) 中定义了各种组件及其属性,这些属性用于控制 Struts 的行为。 - **自己开发 Struts 思路**:理解 Struts 的核心概念后,可以根据实际需求自定义...

    整合Struts_Hibernate_Spring应用开发详解

    - **在Web应用中使用Struts:** 需要在项目的`WEB-INF/lib`目录下添加Struts相关jar包。 - **使用Eclipse开发Struts应用:** Eclipse提供Struts框架的支持插件。 - **Struts入门** - **让Struts拦截用户请求:**...

    DispatchAction

    在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种常见的控制器组件,用于处理用户请求。它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们...

    J2EE_高级Action

    在Web开发中,特别是使用Struts框架时,经常会遇到一个问题:当一个简单的组件(如购物车)需要执行多种操作(如添加商品、删除商品、修改商品数量等),而Struts的`Action`类通常只有一个`execute`方法时,如何设计...

    Action使用说明

    ### Action使用说明详解 ...如果希望在保持每个请求路径对应一个`&lt;action&gt;`元素的同时,又能够在一个Action类中处理多个请求路径,可以选择继承`MappingDispatchAction`。 **配置示例**: ```xml ...

    ssh项目流程和注意事项

    SSH框架(Struts + Spring + Hibernate)是Java Web开发中非常流行的一种技术组合,它能够高效地实现MVC设计模式,提高开发效率,并保证代码的可维护性和可扩展性。本文将详细介绍SSH项目的构建流程及在实际应用中...

    JAVA面试题SSH重点.pdf

    - Struts框架中的Action是处理用户请求的核心组件,有多种类型,如普通Action、SwitchAction、IncludeAction、ForwardAction、DispatchAction、MappingDispatchAction,每种都有特定的用途。 3. **Hibernate HQL与...

Global site tag (gtag.js) - Google Analytics