struts的Dispatch形式

         在上篇文章中简单的描述了struts的应用,但是其存在一个小小的问题,就是每一个请求,都会有一个与之对应的Action。比如说查询用户,就会有一个查询用户的Action;以此类推,增加也会有一个,这样就会使得Action类越来越多,不利于维护。为此出现了另外一种形式,将每一个模块的需求(不如用户的增删改查)封装到一个Action里面,而那些需求则变成这个Action的方法。访问的时候只需要传递一个参数来区分要访问的是哪个方法就可以了。具体如下:
         1、UserAction对象:
<span style="font-size:18px;">/**
 * UserAction继承DispatchAction;而DispatchAction则继承Action
 */
public class UserAction extends DispatchAction {
    /**
     * 缺省方法,当访问时不加参数,则会访问此方法
     */
    @Override
    protected 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");
    }
    /**
     * 查询所有用户
      * 其中的参数和execute方法中的参数一样
     */
    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");
    }
    
    /**
     * 添加用户
     */
    public ActionForward add(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        //获取从页面表单中提交过来的值
        UserActionForm uaf = (UserActionForm)form;
        
        User user = new User();
        //将ActionForm中的值传递到User实体中
        BeanUtils.copyProperties(user, uaf);
        user.setCreateDate(new Date());
        
        //调用业务逻辑操作
        UserManager.getInstance().addUser(user);
        
        return mapping.findForward("success");
    }
    
    ......
}</span>

2、 struts-config.xml文件配置:
<struts-config>

        <form-beans>
            <form-bean name="userActionForm" type="com.bjpowernode.drp.web.forms.UserActionForm" />
        </form-beans>
        
        <action-mappings>
            <action path="/user/list"
                    type="com.bjpowernode.drp.web.actions.UserAction"
                    scope="request"
                    name="userActionForm"
                    parameter="command">
                <forward name="list_success" path="/user/user_list.jsp" />
                <forward name="success" path="/user/list.do" />
                <!-- ...... -->
            </action>
        </action-mappings>
    </struts-config>
注意:在上面的访问中一定不要忘记了配置参数 parameter。(其余的配置参见上篇博客struts应用)
3、客户端访问:
<a href="user/list.do?command=list" title="请点击访问用户管理系统">用户管理</a><br><br>
<a href="user/list.do" title="请点击访问用户管理系统">用户管理</a><br>
4、总结:通过上面的方法,很大程度上减少了Action的数量, 并且把相关的业务方法集合在一起使得维护起来更容易。
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值