zoukankan      html  css  js  c++  java
  • 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>

    转自:http://zengjinliang.javaeye.com/blog/252615

  • 相关阅读:
    第二卷 Spring羊群理论
    logstash7.9.1-官方教程1-快速开始
    springboot-starter定制-Drools模块封装
    集群多节点动态刷新方案-Nacos配置修改监听
    Drools-决策表使用2-集成springboot
    Drools-决策表使用1-快速开始
    springboot-springmvc文件上传、下载、压缩打包
    Java8实用指北1-lambda表达式与函数式接口
    bug:IntrospectionException-Method not found异常与lombok
    res:bean属性复制避免null值覆盖版本
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100607.html
Copyright © 2011-2022 走看看