职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 417|回复: 2

Struts中DispatchAction类的使用

[复制链接]
叫我小乖 发表于 2011-8-23 10:15 | 显示全部楼层 |阅读模式
今天刚刚看了Disp......
这是是struts1......
这是struts2的......


今天刚刚看了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的操作.

醉倚西风 发表于 2011-8-23 10:15 | 显示全部楼层
这是是struts 1里面的 ,比较基础的



 楼主| 叫我小乖 发表于 2011-8-23 10:16 | 显示全部楼层
这是struts2的。
struts1的控制器是ActionServlet
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-16 22:53 , Processed in 0.102457 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表