在默認時,
<result>標簽的type屬性值是“dispatcher”(實際上就是轉發,forward)。開發人員可以根據自己的需要指定不同的類型,如redirect、stream等。如下面代碼所示: <result name="save" type="redirect"> /result.jsp </result>
這時result-type可以在struts2-core-2.0.11.1.jar包或struts2源代碼中的
struts-default.xml文件中找到,在這個文件中找到
<result-types>標簽,所有的result-type都在里面定義了。
已配置結果類型名 |
類 名 |
描 述 |
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 |
返回普通文本類容 |
dispatcher:用於頁面轉發,頁面跳轉過程一直是同一個線程,Action中的數據一直保存在。
redirect:可用於返回一個頁面、一個action、鏈接到一個網址。
缺點:redirect把一個http返回碼(SUCCESS)以及返回的頁面位置一起重新發給web服務器,容納后由web服務器產生一個新的HTTP請求,就會產生一個新的線程,保存在原來Action執行的線程中的數據就無法訪問。 所以,result需要包含Action的數據,那么redirect不是一個可行的辦法。因為新的HTTP請求時在Servlet容器的新的線程中處理的,ActionContext中的所有狀態都不會存在。
缺點:redirect把一個http返回碼(SUCCESS)以及返回的頁面位置一起重新發給web服務器,容納后由web服務器產生一個新的HTTP請求,就會產生一個新的線程,保存在原來Action執行的線程中的數據就無法訪問。 所以,result需要包含Action的數據,那么redirect不是一個可行的辦法。因為新的HTTP請求時在Servlet容器的新的線程中處理的,ActionContext中的所有狀態都不會存在。
chain:功能與redirect的action轉發類似,不過與redirectaction轉發功能不同的是它可以將Action中的數據一直保存在同一個HTTP請求中。