zoukankan      html  css  js  c++  java
  • 有关struts中DispatchAction的用法小结

       今天刚刚看了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 

        <action path="/login"  type="examples.AccountAction"   
                 name="logonForm" 
                 scope="request" 
                 parameter="action" 
                 input="/pages/dispatch1.jsp"> 
           <forward name="success" path="/pages/success.jsp" /> 
        </action> 

        <action path="/logout"  type="examples.AccountAction"   
                 name="logonForm" 
                 scope="request" 
                 parameter="action" 
                 input="/pages/dispatch1.jsp"> 
           <forward name="success1" path="/pages/success1.jsp" /> 
        </action> 

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

    3.再来看看JSP页 pages/dispatch1.jsp 

    <%@ taglib uri="/tags/struts-html" prefix="html" %> 
    <html:link href="/DispathActionTest/login.do?action=login">login</html:link><br> 
    <html:link href="/DispathActionTest/logout.do?action=logout">logout</html:link> 


        这里要注意几点,首先 ?后面的KEY要和struts-config.xml中的parameter相同,还有它的VALUE要是你在 action的一个方法名字,这里方法名为login, 那么在程序运行时就是调用login的操作,如果是logout,那程序就调用logout的操作. 
        补充:我们当然可以通过定义一个类似于<html:hidden property="operAt"/>的变量,只要对该变量赋上对应DispatchAction中的方法的值来确定我们要调用的业务方法。然而笔者不提倡用Struts标签来定义这样的隐含的变量,因为Struts标签为动态标签,它可能需要在FormBean中定义该属性的get和set方法,而在parameter中定义的值不需要在FormBean当中定义get和set方法。笔者建议用html的标准标签<input> 来定义该隐藏变量。因为该标签为静态标签,如果我们改用Struts标签的话可能导致页面出错。
     
    0
  • 相关阅读:
    (数论选拔)联盟阵容
    ai变成bi(递增)最小次数
    状压dp
    dp被3整除的子序列
    离散化+莫队
    dp+哈希
    set的应用
    NOIP 2016 明明的随机数
    洛谷背景更改
    zzulioj 1734 堆
  • 原文地址:https://www.cnblogs.com/zydzyd/p/5629326.html
Copyright © 2011-2022 走看看