zoukankan      html  css  js  c++  java
  • DispatchAction

    DispatchAction避免每个Action创建一个类。

    如果只使用一个UserAction来实现User的增删改查,那么UserAction继承DispatchAction,UserAction中的方法参数与excute的参数相同,该Action不复写execute方法。

    /**
     * 用户CRUD
     * @author Administrator
     *
     */
    public class UserAction extends DispatchAction {

     @Override
     protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      
      System.out.println("-----------UserAction.unspecified()-----------");
      
      //调用业务逻辑操作
      List userList = UserManager.getInstance().findAllUserList();
      request.setAttribute("userlist", userList);
      
      return mapping.findForward("list_success");
      
    //  ActionForward af = new ActionForward();
    //  af.setPath("/user/usermaint.do?command=list");
    //  af.setRedirect(true);
    //  return af;
     }

     /**
      * 用户添加
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return
      * @throws Exception
      */
     public ActionForward add(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      
      //获取从页面表单中提交过来的值
      UserActionForm uaf = (UserActionForm)form;
      
      User user = new User();
      BeanUtils.copyProperties(user, uaf);
      user.setCreateDate(new Date());
      
      //调用业务逻辑操作
      UserManager.getInstance().addUser(user);
      
      
      return mapping.findForward("success");
     } 
     
     /**
      * 用户删除
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return
      * @throws Exception
      */
     public ActionForward del(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      //获取从页面表单中提交过来的值
      UserActionForm uaf = (UserActionForm)form;
      
      //取得需要删除的userId的集合
      String[] userIdList = uaf.getSelectFlag();

      //调用业务逻辑操作
      UserManager.getInstance().deleteUsers(userIdList);
      return mapping.findForward("success");
     }
     
     /**
      * 根据ID查询用户
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return
      * @throws Exception
      */
     public ActionForward find(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      //获取从页面表单中提交过来的值
      UserActionForm uaf = (UserActionForm)form;
      
      String userId = uaf.getUserId();
      
      //调用业务逻辑操作
      User user = UserManager.getInstance().findUserById(userId);
      
      //将user对象从Action传递到JSP页面
      request.setAttribute("user", user);
      
      return mapping.findForward("find_success");
     }
     
    // /**
    //  * 查询所有用户
    //  * @param mapping
    //  * @param form
    //  * @param request
    //  * @param response
    //  * @return
    //  * @throws Exception
    //  */
    // public ActionForward list(ActionMapping mapping, ActionForm form,
    //   HttpServletRequest request, HttpServletResponse response)
    //   throws Exception {
    //  //调用业务逻辑操作
    //  List userList = UserManager.getInstance().findAllUserList();
    //  request.setAttribute("userlist", userList);
    //  
    //  return mapping.findForward("list_success");
    // }
     
     /**
      * 修改用户
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return
      * @throws Exception
      */
     public ActionForward modify(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)
       throws Exception {
      //获取从页面表单中提交过来的值
      UserActionForm uaf = (UserActionForm)form;
      
      User user = new User();
      BeanUtils.copyProperties(user, uaf);
      user.setCreateDate(new Date());
      
      //调用业务逻辑操作
      UserManager.getInstance().modifyUser(user);
      
      return mapping.findForward("success");
     }
     
    }

    配置Action

    <action path="/user/usermaint"
           type="com.bjsxt.drp.web.usermgr.actions.UserAction"
           name="userForm"
           scope="request"
           parameter="command"
         >
          <!--
          <forward name="add_success" path="/user/usermaint.do?command=list" redirect="true"/>
          <forward name="del_success" path="/user/usermaint.do?command=list" redirect="true"/>
          <forward name="modify_success" path="/user/usermaint.do?command=list" redirect="true"/>
           -->
          <forward name="find_success" path="/user/user_modify.jsp"/>
          <forward name="list_success" path="/user/user_list.jsp"/>
         </action>

    action配置中的parameter表示的是url后传递的参数,在Action代码中会根据传递的参数查找对应的方法。

    jsp中的代码:

    <a href="user/usermaint.do?command=list" title="请点击访问用户管理系统">用户管理系统</a>

    然后就会调用action中的list方法。

     DispathAction的执行流程:

    在该UserAction中没有execute方法,所以就执行DispatchAction方法,在该方法中查找command,然后得到command的参数,参数不能只execute或perform,此参数应该是Action中的方法名,然后调用Action中的方法。

    在项目中一般都是一个Action和一个ActionForm。

    1,如果复写execute方法,那么就要调用super里的execute方法

    2,parameter的参数不能是execute或者perform

    3,<action>中的parameter参数是值请求的url后的参数,如果没有参数程序会执行DispatchAction中的未指定方法unspecified(),同时也可以在Action中复写该方法,在复写的该方法中执行一个转向,或者其他操作。

  • 相关阅读:
    Pytorch 随机数种子设置
    python 利用 dictionary 的 .get() 操作,避免写 if-else
    PEP-8 or google 风格 python 代码风格和注释规范
    Vim 多文件切换使用
    Shell 变量及脚本使用
    python numpy 大矩阵运算容易内存爆炸
    Ubuntu 配置 Pytorch on Graph (PoG) 环境
    Markdown 学习笔记
    Linux-saltstack
    Python字符串详解
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1955178.html
Copyright © 2011-2022 走看看