result標籤中type的型別
型別 | 說明 |
chain | 用於Action鏈式處理 |
dispatcher | 用於整合JSP,是<result>元素預設的型別 |
freemarket | 用來整合FreeMarket |
httpheader | 用來處理特殊的HTTP行為 |
redirect | 用來重定向到其它檔案 |
redirectAction | 用來重定向到其它Action |
stream | 用來香瀏覽器返回一個InputStream |
velocity | 用來整合Velocity |
xslt | 用來整合XML/XSLT |
plainText | 用來顯示頁面的原始程式碼 |
result的type型別定義在struts-default.xml中,定義如下
<package name="struts-default" abstract="true"> <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" /> </result-types>
1.dispatcher結果型別
dispatcher結果型別用來表示“轉發”到指定結果資源,它是struts2的預設結果型別
(1)建一個test.jsp頁面,內容如下:
<s:form method="post" action="/Login_toLogin"> <s:textfield name="username" label="使用者名稱"/> <s:password name="password" label="密碼"/> <s:submit></s:submit> </s:form>
(2)在src/action下建一個類TestAction
package action; public class TestAction { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute(){ return "success"; } }
TestAction類中封裝了兩個屬性username和password
(3)配置struts.xml檔案中action
<action name="test" class="action.TestAction"> <result type="dispatcher">/testSuccess.jsp</result> </action>
(4)新建一個testSuccess.jsp
使用者:<s:property value="username"/><br/> 密碼:<s:property value="password"/>
輸出結果:
使用dispatcher記過型別是,由於只是將結果轉發到指定資源,所以能夠暴力會請求的資訊,而且在使用瀏覽器地址顯示為test.action而不是testSuccess.jsp
2、redirect結果型別
redirect結果型別用來“重定向”,到指定的結果資源,該資源可以是JSP檔案,也可以action類。使用redirect結果型別時,系統將呼叫HttpServletResponse的sendRedirect()方法。
還是上面的例子,只是在struts.xml中,修改result元素的結果型別為redirect,程式碼如下:
<action name="test" class="action.TestAction"> <result type="redirect">/testSuccess.jsp</result> </action>
結果在url不在test.action,而是testSuccess.jsp。由於redirect使得瀏覽器再一次發出請求,所有原來的請求資源將不會存在,所以使用<s:property value="username"/>是無法獲取到請求資料的
3、stream結果型別
stream表示流,這種結果型別通常用於實現使用者下載檔案的Action配置中,引數有:
(1)contentType:用來指定床底給瀏覽器stream型別。預設為text/plain
(2)contentLength:指定資料了的位元組長度
(3)contentDiposition:指定檔案下載的處理方式,包括內聯(inline)和附件(attachment)這兩種方式,內聯方式表示瀏覽器會嘗試直接顯示檔案,附件方式會彈出檔案儲存對話方塊,預設值為inline。
(4)inputName:表示資料了屬性。預設值為inputStream
(5)bufferSize:表示緩衝區容量。預設為1024