action之間的參數(shù)傳遞和結(jié)果類型_第1頁
action之間的參數(shù)傳遞和結(jié)果類型_第2頁
action之間的參數(shù)傳遞和結(jié)果類型_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

struts2的action之間的參數(shù)傳遞和結(jié)果類型action的默認(rèn)結(jié)果類型是dispatcher,而action之間發(fā)送請(qǐng)求是不能直接用該結(jié)果類型的。一般來說,可選的結(jié)果有redirect、redirectAction、chain。前兩種都是屬于頁面跳轉(zhuǎn),也就是說,發(fā)送請(qǐng)求以后,地址欄的地址會(huì)刷新為被請(qǐng)求的action的地址,而chain則不會(huì)更新地址。redirect-action:“這個(gè)Result使用ActionMapperFactory提供的ActionMapper來重定位瀏覽器的URL來調(diào)用指定的action和(可選的)namespace.這個(gè)Result比ServletRedirectResult要好.因?yàn)槟悴恍枰裊RL編碼成xwork.xml中配置的ActionMapper提供的模式.這就是說你可以在任意點(diǎn)上改變URL模式而不會(huì)影響你的應(yīng)用程序.因此強(qiáng)烈推薦使用這個(gè)Result而不是標(biāo)準(zhǔn)的redirectresult來解決重定位到某個(gè)action的情況.”---webwork2的說法。redirect:"調(diào)用{@linkHttpServletResponse#sendRedirect(String)sendRedirect}方法來轉(zhuǎn)到指定的位置。HTTP響應(yīng)被告知使瀏覽器直接跳轉(zhuǎn)到指定的位置 (產(chǎn)生客戶端的一個(gè)新請(qǐng)求).這樣做的結(jié)果會(huì)使剛剛執(zhí)行的 action(包括action實(shí)例,action中的錯(cuò)誤消息等)丟失,不再可用?!焙唵握f,兩者的共同點(diǎn)是,*地址欄會(huì)變化,所有前一個(gè)action的請(qǐng)求參數(shù)都會(huì)丟失,當(dāng)然也包括action的屬性值也會(huì)丟失。*路徑寫法稍有不同,redirectAction請(qǐng)求下一個(gè)action時(shí),不帶后綴.action,而redirect和普通URL寫法一致。*redirectAction支持param來附加請(qǐng)求參數(shù),但是這往往會(huì)導(dǎo)致ServletActionRedirectResult報(bào)找不到xxx屬性的警告,這大概是由于無法識(shí)別是IOC注入,還是參數(shù)附加URL導(dǎo)致的,雖然是WARN級(jí)別,不過寧可寫成xxx?a=x&b=y的形式,而&還需要寫作&的格式,否則會(huì)報(bào)xml格式錯(cuò)誤。(另外,這種url形式,作為param的actionName的值也是可以正常使用的)chain:相當(dāng)于是forward,首先表現(xiàn)為地址欄不會(huì)改變,類似 dispatcher,同時(shí),它的特點(diǎn)是能夠在多個(gè)action中共享表單傳遞過來的數(shù)據(jù),同時(shí),按照action鏈的順序,相關(guān)action的屬性值也會(huì)傳遞下去,這表示在最后的視圖頁,你可以得到前面所有action的屬性值(如果有g(shù)et方法的話)。對(duì)于多個(gè)action具有相同屬性值的話,后續(xù)action會(huì)先使用前面的action的數(shù)據(jù)來進(jìn)行賦值,然后再進(jìn)行邏輯處理并傳遞下去。看起來是很完美,可是卻有很大的問題。如果后面的 action需要調(diào)用前面action的屬性值,他得保證具有同樣的屬性值,否則你無法接收到前面 action的值。他無法像redirect-action一樣通過附加參數(shù)獲取,他不支持xxx?a=x&b=y的形式。這將導(dǎo)致很大的耦合性和無效參數(shù)的泛濫,無法通過配置文件傳遞參數(shù)也很麻煩。另外,很困擾的一點(diǎn)就是,如果在action鏈靠前的action方法內(nèi)出現(xiàn)錯(cuò)誤(如action的hasError方法返回true)或者發(fā)生異常,他就會(huì)強(qiáng)迫你定義 input結(jié)果,包括后面的action也要定義,否則就會(huì)報(bào)錯(cuò)。而實(shí)際上,即使符合了以上條件,他仍不會(huì)執(zhí)行后面的 action,而是直接跳到后面的action的input視圖。除非發(fā)生錯(cuò)誤的 action返回input,并且type為"chain”并且后一個(gè)action的方法必須為input,否則后續(xù)方法不會(huì)執(zhí)行,而直接定位到了最后的物理視圖。這讓我覺得chain的適用范圍變的十分窄, 據(jù)說webwork2已經(jīng)不提倡使用chain,這個(gè)沒考證過。提交服務(wù)器處理業(yè)務(wù)后結(jié)果返回頁面的處理,Struts2提供了對(duì)不同種類返回結(jié)果的支持,常見的有JSP,F(xiàn)reeMarker,Velocity等。struts.xml配置文件中result的語法:<resultname=""type="">xxxxx</result>Struts2支持的不同類型的返回結(jié)果為:ChainResult-->type="chain"用來處理Action鏈DispatcherResult-->type="dispatcher"用來轉(zhuǎn)向頁面,通常處理JSPFreeMarkerResult-->type="freemarker"處理FreeMarker模板HttpHeaderResult-->type="httpheader"用來控制特殊的Http行為RedirectResult-->type="redirect"重定向到一個(gè)URLRedirectActionResult-->type="redirectAction"

重定向到一個(gè)ActionStreamResult-->type="stream"向?yàn)g覽器發(fā)送InputSream對(duì)象,通常用來處理文件下載VelocityResult-->type="velocity"處理Velocity模板XLSTResult-->type="xslt"處理XML/XLST模板

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論