struts2自主學習之動態方法調用,使用method屬性,配置Result,結果類型

在包含的文件中依然可以使用struts元素,include等元素,
如果struts.xml文件元素比較少,就不需要使用include元素。


動態方法調用

在什麼情況下使用:

在業務邏輯處理action中,可以包含一個或者多個
邏輯處理方法。
例如JSP文件中的同一個form表單有多個提交表單值得按鈕,
當用戶通過不同的按鈕提交表單時,需要調用action中的不同處理方法,
這時就可以使用動態方法調用。
在使用動態方法時,提交請求的action屬性值必須
符合下面的格式
action="action名稱!方法名稱"
或者action="action名稱!方法名稱.action"

使用method屬性

除了name屬性和class屬性以外,配置action時還可以使用method屬性
例如:
<action name="action名稱" class="包名.action類名" method="方法名稱">
    <result>視圖URL</result>
</action>

method屬性值的默認屬性是execute。


配置Result
結果映射
業務控制器action負責處理用戶請求,但是它不能提供對用戶的直接響應,當action處理完請求信息後,需要根據Result
結果配置,將action的處理結果對應到相應的視圖。
使用<result>元素配置結果映射的標準配置形式如下:
<action name="addBook" class="action.AddBook">
    <result name="success" type="dispatcher">
        <param name="location">/allBook.jsp</param>
    </result>
</action>
簡化爲如下內容:
<action name="addBook" class="action.AddBook">
    <result>/allBook.jsp</result>
</action>


Result配置分類
局部result定義在<action>元素中,作用範圍是這個action,這時<result>元素是<action>
元素的子元素。例如:
<action name="addBook" class="action.AddBook">
    <result>/addSuccess.jsp</result>
</action>
全局result定義在<package>的<global-results>元素下,作用範圍是整個包,這時<result>
元素是<global-results>元素的子元素。
例如:
<global-results>
    <result name="error">/error.jsp</result>
</global-results>
<action name="addBook" class="action.AddBook">
    <result>/addSuccess.jsp</result>
</action>
如果相應的錯誤視圖界面,在所有或者大部分action類起作用,就定義爲全局Result配置


結果類型

chain        用於action鏈式處理
dispatcher    用於整合jsp,是<result>元素的默認的類型
freemarker    用於整合FreeMarker
httpheader    用於處理特殊的HTTP行爲
redirect    用來重定向到其他文件
redirectAction    用來重定向到其他的action
stream        用來向瀏覽器返回一個InputStream
velocity    用來整合Velocity
xslt        用來整合xml/xslt
plainText    用來顯示頁面的原始代碼


Stream結果類型
stream表示流,這種結果類型通常用於實現用戶下載文件的action配置中。在配置stream結果類型
時,可以指定以下幾個參數:
contentType    用來指定傳遞給瀏覽器的stream類型,默認值爲text/plain
contentLength    指定數據流的字節長度
contentDispositon指定文件下載的處理方式,包括內聯(inline)和附件(attchment)這兩種方式。
內聯方式表示瀏覽器會嘗試直接顯示文件,附件方式會彈出文件保持對話框。默認值爲inline
inputName    表示數據流屬性,默認值爲inputStream
bufferName    表示緩衝區容量,默認值爲1024


chain結果類型
<package name="myPackage1" extends="struts-defult">
    <action name="test1" class="action.Test1">
        <result type="chain">test2</result>
    </action>
    <action name="test2" class="action.Test2">
        <result type="chain">
            <param name="actionName">test3</param>
            <param name="namespace">/namespace2</param>
        </result>
    </action>
</package>
<package name="myPackage2" extends="struts-defult" namespace="/namespace2">
    <action name="test3" class="action.Test3">
        <result name="success">/success.jsp</result>
    </action>
</package>

dispatcher結果類型

redirect結果類型
爲了解決重複提交表單信息!!!
redirect結果類型用來"重定向"到指定的結果資源,該資源可以是jap文件,也可以是action類。
使用redirect結果類型時,系統將調用HttpServletResponse的sendRedirect()方法,實現重定向
到其他文件。
redirect結果類型和dispatcher類型相對應。dispatcher類型表示將請求轉發到其他資源,而redirect類型是
重定向到其他資源。
轉發可以將用戶請求信息保留。而重定向不能保留用戶請求。
應用:
<result type="redirect">/testSuccess.jsp</result>



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