纸飞机

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  22 随笔 :: 28 文章 :: 30 评论 :: 0 Trackbacks

Struts DispatchAction 的使用



纸飞机
JAVA 学习笔记   英文名 : Steven Wang    QQ 63001184     邮箱: jxhkwhy@126.com                              [ 原创 ] 

 

今天在看一个 Struts 代码时,发现 Action 类继承的父类为 DispatchAction ,于是找了找资料研究了下 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>

 

 

posted on 2007-01-21 21:43 纸飞机 阅读(4212) 评论(2)  编辑  收藏

评论

# re: Struts:DispatchAction的使用 2009-01-16 21:46 viralpatel.net@gmail.com
Hi,
See this tutorial for DispatchAction example in Struts.
http://viralpatel.net/blogs/2009/01/struts-dispatch-action-tutorial-with-example-in-eclipse.html  回复  更多评论
  

# re: Struts:DispatchAction的使用 2009-07-10 20:13 showMe
你的这个好象是MappingDispatchAction的用法吧?DispatchAction只能有一个访问路径,ActionServlet决定调用哪个方法,取决于JSP页面中所提供的一个参数的名称的值,不知道我说的对不对  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: