Chinaunix首页 | 论坛 | 博客
  • 博客访问: 269121
  • 博文数量: 82
  • 博客积分: 2477
  • 博客等级: 大尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 23:24
文章分类

全部博文(82)

文章存档

2013年(1)

2012年(3)

2011年(15)

2010年(36)

2009年(27)

分类: Java

2010-03-26 14:14:05

今天刚刚看了DispatchAction觉得这个东西有点意思,所以就写点东西,通过它的名字我想应该可以明白它的作用了,用于分发的Action,主要的好处是把一些功能类似的Action放到一个Action中,通过传入的不同参数来觉得执行哪个操作.
    DispatchAction类是一个抽象类,它实现了父类(Action)的execute()方法,所以它的子类就不用来实现这个方法了,只需要专注与实际操作的方法, 
     1.首先要一个DispatchAction的子类,它含有一些方法,login,logout,method1,
package examples;
                                                                               
package examples;
                                                                               
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.*;

public class AccountAction extends DispatchAction {
    public ActionForward login(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
    throws Exception {
        // 進行一些Login的邏輯
              return mapping.findForward("success");  

    }
                                                                               
    public ActionForward logout(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
    throws Exception {
        // 進行一些Logout的邏輯
              return mapping.findForward("success1");  

    }

    public ActionForward method1(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
    throws Exception {
        // 進行一些method1的邏輯
              return mapping.findForward("success");  

    }

    

  
      一定要注意在DispatchAction中你想执行的操作,都必须要有统一的参数(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response),是一个规定.
2.接下来是配置struts-config.xml
 
                 name="logonForm"
             scope="request"
             parameter="action"
             input="/pages/dispatch1.jsp">
       
    

                 name="logonForm"
             scope="request"
             parameter="action"
             input="/pages/dispatch1.jsp">
       
    

   这里需要注意的就是parameter属性的值,因为这个值要和页面传来的参数对应.

3.再来看看JSP页 pages/dispatch1.jsp
 
<%@ taglib uri="/tags/struts-html" prefix="html" %>
login

logout


    这里要注意几点,首先“?”后面的KEY要和struts-config.xml中的parameter相同,还有它的VALUE要是你在action的一个方法名字,这里方法名为login, 那么在程序运行时就是调用login的操作,如果是logout,那程序就调用logout的操作.
 
特别提示:
    如果您使用MyEclipse生成DispatchAction的扩展类,应该将生成的扩展类中的execute方法删除,以防止运行时,控制器默认走execute方法。
阅读(838) | 评论(0) | 转发(0) |
0

上一篇:Struts常用Action

下一篇:DynaActionForm学习

给主人留下些什么吧!~~