StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風(fēng)箏一輩子只為一根線冒險(xiǎn)。 那不是一場游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進(jìn)夢鄉(xiāng)? 那不是一個夢境,為何你的溫柔私語,總是不經(jīng)意的響起?

          導(dǎo)航

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          servlet中的一些疑惑

          因?yàn)镽edirect的流程是這樣的,  request 1  sent to server,  server return back to client,  request 2 then sent to server. But Forward 僅在server side處理, 對client side 是透明的. 由于Redirect 有兩次傳輸, 所以效率低. 范圍: 由于對request.setAttribute() 來說, 它攜帶的對象生存范圍只在request內(nèi), 所以Redirect方式會導(dǎo)致request攜帶的對象丟失. 總結(jié):  一般還是用Forward比較合適. 
          ActionMapping

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

          ActionForward

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

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

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

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

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

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

          posted on 2011-10-07 18:04 Steven_bot 閱讀(355) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宣汉县| 大庆市| 海淀区| 汝阳县| 乌什县| 合川市| 寿阳县| 定结县| 哈尔滨市| 江永县| 云南省| 富锦市| 望城县| 增城市| 腾冲县| 什邡市| 沙田区| 庆元县| 永修县| 郸城县| 福鼎市| 营口市| 抚松县| 南和县| 阿勒泰市| 丹棱县| 从化市| 依安县| 中卫市| 嘉祥县| 托克托县| 酒泉市| 临沂市| 麦盖提县| 亚东县| 报价| 绍兴市| 丹寨县| 盐池县| 天峻县| 武川县|