`

DispatchAction的使用

阅读更多

1,先写一个CommonAction类
    public class CommonAction extends DispatchAction {

    private static ApplicationContext context = null;

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {

        // Identify the request parameter containing the method name
        String parameter = mapping.getParameter();
        if (parameter == null) {
            String message = messages.getMessage("dispatch.handler", mapping
                                                 .getPath());
            log.error(message);
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                               message);
            return (null);
        }

        // Identify the method name to be dispatched to.
        // dispatchMethod() will call unspecified() if name is null
        String name = request.getParameter(parameter);

        ////////////////////////////////////////////////////////////
        // to do : check the authorization...
        ////////////////////////////////////////////////////////////

        // Invoke the named method, and return the result
        return dispatchMethod(mapping, form, request, response, name);
    }
}
该类的主要方法是dispatchMethod负责调用Action类的name方法

2.现在具体写一个类,该类包含save和list方法

public class ListAllLeavesAction extends CommonAction {
   
    public ActionForward list(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
       
        LybanForm listForm = (LybanForm)form;
       
        Session session = HibernateUtil.currentSession();
        Criteria c = session.createCriteria(Ly.class);
       
        listForm.setFields(c.list());
        return mapping.findForward("list");
    }
   
    public ActionForward save(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        LybanForm addLybanForm = (LybanForm) form;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date now = new Date();

        Session session = HibernateUtil.currentSession();
        Transaction t = session.beginTransaction();
        Ly ly = new Ly();
        ly.setMail(addLybanForm.getMail());
        ly.setMessages(addLybanForm.getMessages());
        ly.setName(addLybanForm.getName());
        ly.setTitle(addLybanForm.getTitle());
        ly.setTime(sdf.format(now));
        session.save(ly);
        t.commit();

        HibernateUtil.closeSession();

        return mapping.findForward("success");
    }
}

3.现在看一下页面是如何调用ListAllLeavesAction类的save方法
<body>
    <html:form action="/jsp/lyb/manageLyban" method="post">
        <table width="90%" border="1" align="center" bordercolor="#CCCCCC">
                <tr>
                <input type="hidden" name="method" value="save"/>//该隐藏域的method属性的值就是ListAllLeavesAction类对应的save方法的名字
                    <td width="100" align="right" class="tdright">
                            &nbsp;留言标题<span class="red">*</span>:                    </td>
                    <td width="185" class="TDTEXT2">
                        <input name="title" type="text">
                  &nbsp;</td>
                    <td width="98" align="right" class="tdright">
                    <div align="right">留言人:</div>
                    </td>
                    <td width="279" class="TDTEXT2"><input name="name" type="text">&nbsp;</td>
                </tr>

                <tr>
                    <td align="right" class="tdright">
                        <div align="right">
                            留言内容<span class="red">*</span>:                        </div>                    </td>
                    <td width="185" class="TDTEXT2"><input name="messages" type="text"></td>
                    <td align="right" class="tdright">
                        <div align="right">
                            留言人Email:</div>    </td>
                    <td width="279" class="TDTEXT2"><input name="mail" type="text"></TD>
                </tr>
                <tr align="center">
                    <td height="33" colspan="5">
                        <input type="button" value="确定" onClick="submit();" />
                </td>
                </tr>
        </table>
    </html:form>   
    </body>
</html>
这样就会调用ListAllLeavesAction类里面的save方法

4.Struts配置文件的配置
<struts-config>
    <form-beans>
        <form-bean name="addLybForm" type="com.dragonsoft.lyb.struts.form.LybanForm" />
    </form-beans>

    <action-mappings>
    <action attribute="addLybForm" parameter="method" input="/jsp/addLyban.jsp"  name="addLybForm" path="/jsp/lyb/manageLyban" scope="request" type="com.dragonsoft.lyb.struts.action.ListAllLeavesAction">
        <forward name="success" path="/jsp/lyb/manageLyban.do?method=list"/>
        <forward name="list" path="/jsp/listAllLeaves.jsp" />
    </action>
    </action-mappings>
</struts-config>
注意的是parameter的值要跟页面隐藏域method的名字一样

这是一个简单的例子,想必大家也看的懂,我就不需要再罗嗦了。
分享到:
评论

相关推荐

    struts中dispatchAction用法

    以下是一个简单的DispatchAction使用步骤: 1. **创建DispatchAction类**:首先,你需要继承自org.apache.struts.actions.DispatchAction,创建一个新的Action类。在这个类中,你需要定义一系列处理特定业务的方法...

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

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

    DispatchAction

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

    DispatchAction实例

    下面我们将详细探讨`DispatchAction`的使用步骤和关键点: 1. **创建子类**:首先,你需要创建一个继承自` DispatchAction `的Java类。在这个类中,你可以定义自己的业务逻辑方法,比如`executeSave()`、`...

    java面试过程中遇到的问题总结

    DispatchAction 的 parameter 属性是给 DispatchAction 使用的,你的类要继承 DispatchAction 类,而不是普通的 Action,Action 只会执行 execute 方法,DispatchAction 会根据 parameter 的值执行特定的方法。...

    struts DispatchAction

    使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...

    Struts中等同于DispatchAction类方法

    总结来说,"Struts中等同于DispatchAction类方法"是一种在不直接使用`DispatchAction`基类的情况下,通过前端传递方法名并在后端使用反射调用相应方法的技术,以实现多请求映射到单个Action类的多个方法。...

    DispatchAction、LookupDispatchAction、SwitchAction的应用

    **1.1 为什么要使用 DispatchAction** 在传统的 Struts 应用中,每一个业务逻辑操作往往都需要创建一个单独的 Action 类。例如,在一个文章管理系统中,可能需要为文章的添加、查看和搜索等功能分别编写 `...

    struts实现文件上传

    以下是对文件上传和DispatchAction使用的一些详细说明: 1. **文件上传流程**: - **表单提交方式**:文件上传必须使用HTTP的POST方法,因为GET方法无法处理大容量的数据,而文件通常较大。 - **表单编码**:`...

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

    5. **在JSP页面上展示**:最后,在JSP页面(如paging.jsp)上,你可以使用JSTL或其他标签库来遍历分页数据,并提供导航链接,让用户可以跳转到其他页码。 总结,通过结合Struts的DispatchAction和存储过程,我们...

    struts+oracle实现DispatchAction类

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

    Struts_DispatchAction的使用

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

    Struts 之 DispatchAction

    在本篇文章中,我们将深入探讨`DispatchAction`的工作原理、优点以及如何在实际项目中使用。 `DispatchAction`是Struts提供的一个扩展自`Action`类的预定义动作,它的主要目的是通过不同的方法来处理来自客户端的...

    Struts2常用标签&DispatchAction.rar

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

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

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

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

    2. **DispatchAction的使用**: - **配置Action**:在struts-config.xml中,我们需要定义DispatchAction,指定其对应的类以及各个请求参数与方法的映射关系。例如: ```xml &lt;param name="operation"&gt;add `...

    SSH整合继承DispatchAction的简单例子

    这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现多请求分发的功能。 首先,让我们深入理解SSH框架的核心功能。Spring是一个强大的依赖注入...

    深入解析Java的Struts框架中的控制器DispatchAction

    本文将深入解析Struts中的控制器组件,特别是DispatchAction的使用。 在Struts框架中,控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截所有HTTP请求,并根据配置文件(struts-...

    速动画教程系列第13集

    6. **与现代框架对比**:虽然DispatchAction在早期的Struts应用中广泛使用,但在Spring MVC和Play Framework等现代Java Web框架中,这种模式已被更简洁、可扩展的方式所取代,如使用注解驱动的方法映射。 7. **学习...

    struts1.2实现计算器示例

    Struts1.2是一个经典的Java Web框架,它在企业级应用开发中被广泛使用,尤其在Web MVC(Model-View-Controller)设计模式的应用上。本示例是基于Struts1.2实现的一个计算器程序,旨在帮助初学者理解Struts框架的工作...

Global site tag (gtag.js) - Google Analytics