隨筆-23  評(píng)論-0  文章-5  trackbacks-0
            
          初學(xué)struts也是一知半解,比如action與dispatchAction的區(qū)別,最近便讓我十分困惑。  

          做為一個(gè)初學(xué)者,在目前使用過(guò)的東西中,主要有mapping.findForward(),action,dispatchAction三個(gè)實(shí)用功能,這三者放在一起本不太合適,但是在我看來(lái),也有一定的相關(guān)性。  

          struts主要用途
          1. 判斷url傳值所要做的操作。比如 http://www.baidu.com/index.jsp?run=showAll ,這個(gè)如果使用了action,可以使用request.getParameter()接收。
          2. 使用mapping.findForward(url);替換servlet的response.sendRedirect("http://www.baidu.com");
          3. 把form提交的內(nèi)容封裝到formBean。這樣在使用了大量form的時(shí)候,可以用formBean的一實(shí)例lf.formName這樣去調(diào)用。
          好處在于不用使用request.getParameter("formName");去接收。
          4. 使用dispatchAction,在struts-config.xml中進(jìn)行配置,直接可以判斷get鏈接中的傳值,也可以避免使用request.getParameter("formName");去接收。

          formBean與dispatchAction的區(qū)別: 
          顯而易見(jiàn),formBean使用在大量的post表單的情況下。
          dispatchAction常用來(lái)處理url鏈接中傳來(lái)的值。

          Action與dispatchAction的區(qū)別: 
          這里使用區(qū)別并不合適,因?yàn)閐ispatchAction繼承自Action,所以dispatchAction是對(duì)action進(jìn)行了功能的擴(kuò)充,action常需要使用getParameter()先獲取傳入的值,再判斷這個(gè)值是否正常,再重定向到不同的頁(yè)面。 
          而dispatchAction把判斷放以了struts-config.xml文件中,而不需要再到業(yè)務(wù)層進(jìn)行判斷。并且dispatchAction在使用中,更常用于處理url傳入的get請(qǐng)求。


          Struts的生存周期

          啟動(dòng)web服務(wù)器 -- 加載web.xml文件 -- 產(chǎn)生ActionServlet實(shí)例 -- 加載struts-config.xml文件 -- 解析出多個(gè)action并放入actionMapping池 
          客戶端發(fā)現(xiàn)請(qǐng)求 -- web容器 -- 請(qǐng)求發(fā)送到ActionServlet -- 分發(fā)到不同的action并實(shí)例化 -- 模型層處理 -- 處理結(jié)果返回到actionServlet -- 返回結(jié)果到視圖層

          舉例
          下面是一個(gè)使用了dispatchAction的項(xiàng)目的完整struts-config.xml配置
          ---------------------------------------------
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

          <struts-config>
          <data-sources />
          <form-beans />
          <global-exceptions />
          <global-forwards />
          <form-beans>      //formbean的定義,name="loginForm"對(duì)應(yīng)于下文中的name="loginForm"
          <form-bean name="loginForm" type="org.jsw.struts.form.LoginForm" />
          </form-beans>
          <action-mappings >

          <action                    //定義了一個(gè)action
          path="/manager"           //此action的訪問(wèn)路徑
          name="loginForm"          //此action用于接收哪個(gè)formbean,對(duì)應(yīng)于上文<form-beans>中的內(nèi)容
          parameter="method"      //此action用于接怍method的值,如果method值是add,那么自動(dòng)調(diào)用業(yè)務(wù)層的add方法
          type="com.umt.struts.action.ManagerAction">
          <forward name="success" path="/success.jsp"></forward>     //定義了重向向地址
          <forward name="delete" path="/delete.jsp"></forward>
          </action>
          </action-mappings>

          <message-resources parameter="com.jsw.struts.ApplicationResources" />
          </struts-config>
          posted on 2013-11-05 16:37 ForMeBlog 閱讀(486) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 框架集合
          主站蜘蛛池模板: 彰化县| 彭水| 张家界市| 莱西市| 梅河口市| 彭州市| 余干县| 眉山市| 交城县| 宝丰县| 塔河县| 徐闻县| 雷波县| 临城县| 德惠市| 蓝山县| 常德市| 琼结县| 民勤县| 迭部县| 鹤庆县| 河源市| 辉县市| 安庆市| 石河子市| 马尔康县| 福建省| 乌什县| 威海市| 军事| 定安县| 瓦房店市| 香格里拉县| 白玉县| 舞钢市| 惠州市| 大新县| 晋州市| 五常市| 吴江市| 句容市|