Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
          數(shù)據(jù)加載中……

          重溫Struts--ActionMapping和ActionForward

          作者:Flyingis

          前段時間用Struts完成一個小項目,當時還沒有來到blogjava,很多東西也沒有記錄。現(xiàn)在花一點時間,將整個Struts應用重新溫習一遍,重新挖掘項目開發(fā)過程中沒有注意到的知識點,并寫下自己的一些心得與體會。

          ActionMapping

          ActionMapping將對Struts應用中有效的業(yè)務邏輯進行分類,當一個請求到達時,ActionSevletActionMapping目錄中查找對應的信息。ActionMappingStruts應用的一個核心設計,當需要了解一個Struts應用,或編寫一個新的Struts應用的時候,都應該從ActionMapping入手。ActionMapping有較多的屬性信息,具體參考相關文檔。

          ActionForward

          ActionForwardStruts的核心類之一,其基類僅有4個屬性:name / path / redirect / classname。在基于StrutsWeb應用程序開發(fā)過程中,Action操作完畢后程序會通過Struts的配置文件struts-config.xml鏈接到指定的ActionForward,傳到Struts的核心類ActionServletActionServlet使用ActionForward提供的路徑,將控制傳遞給下一個步驟。ActionForward控制接下來程序的走向。ActionForward代表一個應用的URI,它包括路徑和參數(shù),例如:

          path=“/modify.do?method=edit&id=10”

          ActionForward的參數(shù)除了在struts-config.xml和頁面中設置外,還可以通過在Action類中添加參數(shù),或重新在Action中創(chuàng)建一個ActionForward

          ActionForward中有一個重要的屬性redirect,當redirect=false時,將保存存儲在http請求和請求上下文中的所有內(nèi)容,僅在同一個應用中可用。當redirect=true時,Web客戶端進行一次新的http請求,請求的資源可以在同一個應用中,也可以不在,原來的請求參數(shù)不再保存,原來的請求上下文也被清除,新的http請求僅包含ActionForwardpath屬性里所包含的參數(shù)。如果在同一個應用中,用戶會話的上下文會被維護。

          ActionForward分為全局轉發(fā)和局部轉發(fā),ActionMapping對象的findForward方法首先會檢查局部轉發(fā)列表,查找失敗就會到全局轉發(fā)列表中查找。書寫格式中,我們一般將全局變量定義為String常數(shù),避免誤解,使得轉發(fā)列表結構清晰易讀。

          在項目開發(fā)過程中經(jīng)常碰到一種情況,當頁面已經(jīng)改變了,瀏覽器中的地址如/modify.do/modify.jsp卻沒有變化,當時沒有考慮這么細,雖然存在疑問,但沒有影響到程序功能的實現(xiàn),因此忽略過去了,今天查找了一些資料才弄清楚。客戶端瀏覽器顯示的是瀏覽器最后被給定的URL,當URL被提交后,在某個組件返回一個響應給瀏覽器之前,Web應用可能已經(jīng)轉發(fā)請求多次,而這些過程都發(fā)生在服務器端,客戶端瀏覽器并不知道有什么變化。當一個http響應被返回時,它并沒有包含地址欄的值,所以瀏覽器僅僅顯示其用來作為初始請求的地址。通過使用redirect可以改變?yōu)g覽器地址的顯示,因為這樣可以向瀏覽器提交一個新的請求,但付出的代價是數(shù)據(jù)不能通過請求上下文傳遞到頁面,這也是使用forwardredirect的差異之一。

          posted on 2006-03-05 10:40 Flyingis 閱讀(1439) 評論(0)  編輯  收藏 所屬分類: Web 框架與開發(fā)

          主站蜘蛛池模板: 白河县| 和顺县| 英超| 读书| 马龙县| 杭锦后旗| 徐州市| 博白县| 安多县| 恭城| 策勒县| 成安县| 兴城市| 松江区| 五原县| 镇沅| 筠连县| 衡南县| 抚远县| 繁峙县| 白朗县| 三门峡市| 永新县| 中宁县| 老河口市| SHOW| 沙坪坝区| 鸡东县| 息烽县| 三门县| 册亨县| 汽车| 绥化市| 田阳县| 元阳县| 鸡泽县| 阿拉善左旗| 钟山县| 措勤县| 兴义市| 普格县|