【轉】Struts2框架提供的結果類型

在struts2框架中,當action處理完之後,就應該向用戶返回結果信息,該任務被分爲兩部分:結果類型和結果本身。

結果類型提供了返回給用戶信息類型的實現細節。結果類型通常在Struts2中就已預定義好了(見下表),或者是由插件提供,開發人員也可以自定義結果類型。默認配置的結果類型是dispatcher,該結果類型使用JSP來向用戶顯示結果。當定義了結果類型之後,該結果類型可以在不同的action中重複使用。

?

Struts2框架提供的結果類型

已配置結果類型名  類 名  描 述
dispatcher  org.apache.struts2.dispatcher.
ServletDispatcherResult
 默認結果類型,用來呈現JSP頁面
chain  com.opensymphony.xwork2.
ActionChainResult
 將action和另外一個action鏈接起來
freemarker  org.apache.struts2.views.freemarker.
FreemarkerResult
 呈現Freemarker模板
httpheader  org.apache.struts2.dispatcher.
HttpHeaderResult
 返回一個已配置好的HTTP頭信息響應
redirect  org.apache.struts2.dispatcher.
ServletRedirectResult
 將用戶重定向到一個已配置好的URL
redirectAction  org.apache.struts2.dispatcher.
ServletActionRedirectResult
 將用戶重定向到一個已定義好的action
stream  org.apache.struts2.dispatcher.
StreamResult
 將原始數據作爲流傳遞迴瀏覽器端,
該結果類型對下載的內容和圖片非常有用
velocity  org.apache.struts2.dispatcher.
VelocityResult
 呈現Velocity模板
xslt  org.apache.struts2.views.xslt.
XSLTResult
 呈現XML到瀏覽器,
該XML可以通過XSL模板進行轉換
plaintext  org.apache.struts2.dispatcher.
PlainTextResult
 返回普通文本類容

簡單說明一下result的name屬性和type屬性:
SUCCESS:Action正確的執行完成,返回相應的視圖,success是name屬性的默認值。
NONE:表示Action正確的執行完成,但並不返回任何視圖。
ERROR:表示Action執行失敗,返回到錯誤處理視圖。
INPUT:Action的執行,需要從前端界面獲取參數,INPUT就是代表這個參數輸入的界面,一般在應用中,會對這些參數進行驗證,如果驗證沒有通過,將自動返回到該視圖。
LOGIN:Action因爲用戶沒有登陸的原因沒有正確執行,將返回該登陸視圖,要求用戶進行登陸驗證。
dispatcher:請求轉發,底層調用RequestDispatcher的forward()或include()方法,dispatcher是 type屬性的默認值,通常用於轉向一個JSP。localtion指定JSP的位置,parse如果爲false表示location的值不會被當作 OGNL解析,默認爲true。
redirect:重定向,新頁面無法顯示Action中的數據,因爲底層調用response.sendRedirect("")方法,無法共享請求範圍內的數據,參數與dispatcher用法相同。
redirect-action:重定向到另一個Action,參數與chain用法相同,允許將原Action中的屬性指定新名稱帶入新Action 中,可以在Result標籤中添加 <param name=”b”>${a} </param>,這表示原Action中的變量a的值被轉給b,下一個Action可以在值棧中使用b來操作,注意如果值是中文,需要做一些編碼處理,因爲Tomcat默認是不支持URL直接傳遞中文的!
velocity:使用velocity模板輸出結果,location指定模板的位置(*.vm),parse如果爲false,location不被OGNL解析,默認爲true。
xslt:使用XSLT將結果轉換爲xml輸出,location指定*.xslt文件的位置,parse如果爲false,location不被 OGNL解析,默認爲true。matchingPattern指定想要的元素模式,excludePattern指定拒絕的元素模式,支持正則表達式,默認爲接受所有元素。
httpheader:根據值棧返回自定義的HttpHeader,status指定響應狀態(就是指response.sendError(int i)重定向到500等服務器的狀態頁)。parse如果爲false,header的值不會被OGNL解析,headers,加入到header中的值,例如: <param name=”headers.a”>HelloWorld </param>。可以加多個,這些鍵-值組成HashMap。
freemaker:用freemaker模板引擎呈現視圖,location指定模板(*.ftl)的位置,parse如果爲false,location的值不會被OGNL解析。contentType指定以何中類型解析,默認爲text/html。
chain:將action的帶着原來的狀態請求轉發到新的action,兩個action共享一個ActionContext,actionName指定轉向的新的Action的名字。method指定轉向哪個方法,namespace指定新的Action的名稱空間,不寫表示與原Action在相同的名稱空間;skipActions指定一個使用 , 連接的Action的name組成的集合,一般不建議使用這種類型的結果。
stream:直接向響應中發送原始數據,通常在用戶下載時使用,contentType指定流的類型,默認爲 text/plain,contentLength以byte計算流的長度,contentDisposition指定文件的位置,通常爲 filename=”文件的位置”,input指定InputStream的名字,例如:imageStream,bufferSize指定緩衝區大小,默認爲1024字節。
plaintext:以原始文本顯示JSP或者HTML,location指定文件的位置,charSet指定字符集。

本文出處: http://blog.knowsky.com/188302.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章