层层递进Struts1(七)详解DispatchAction2013-12-07 csdn 李达通过前面几篇博客,不知道大家有没有发现这个问题,虽然现在可以灵活控制跳转了,但是Action的数量 还是比较多,如何既能保证跳转灵活,还能减少Action的数量?这就是我们这篇博客所说的DispatchAction, 如其名,可以理解为“分发式Action”,使用它可以避免为每个Action创建一个类。我们先来看一下 实例。UserActionDispatchAction继承的是Action,它的特点就是把以前的多个Action合并为 一个,当多个Action关联较大时,可以像这样放在一起,减少Action类的同时,也降低了维护的难度。
package com.tgb.drp.web.actions;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;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.tgb.drp.manager.UserManager;import com.tgb.drp.model.User;import com.tgb.drp.web.forms.UserActionForm;public class UserAction extends DispatchAction {@Overrideprotected ActionForward unspecified(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 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("del_success");}/*** 用户添加* @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("add_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);//调用业务逻辑操作UserManager.getInstance().modifyUser(user);return mapping.findForward("modify_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");}}