1、每個action方法都返回一個String類型的值,struts一次請求返回什麼值是由這個值確定的。
2、在配置文件中,每一個action元素的配置都必須有result元素,每一個result對應一個action的返回值。
3、Result有兩個屬性:
name:結果的名字,和action中的返回值一樣,默認值為success;
type:響應結果類型,默認值為dispatcher.
在下面找到struts-default.xml文件中,如下面所示:
說明:
1、從上述可以看出總共10種類型
2、默認類型為ServletDispatcherResult即轉發。
3、結果類型可以是這10種結果類型的任意一種。
Dispatcher類型(1)、 說明Dispatcher類型是最常用的結果類型,也是struts框架默認的結果類型。
(2)、 例子頁面參照:/manager/index.jsp
Action參照:AdminAction
配置文件:struts.xml
在配置文件中,可以有兩種寫法:
下面的圖說明了location的來歷:
查看源碼:
6.2.2 Redirect類型(1)、 說明Redirect屬於重定向。如果用redirect類型,則在reuqest作用域的值不能傳遞到前台。
redirectAction類型(1)、說明1、把結果類型重新定向到action
2、可以接受兩種參數
a) actionName: action的名字
b) namespace:命名空間
第一種方式:
<result name="success" type="redirectAction">resulttype/redirectactionAction.action</result>
第二種方式:
<result name="success" type="redirectAction">
<!--
actionName:
請求的action的路徑
namespace:
如果不寫,默認就是請求的action的路徑,如果寫,路徑將被重新賦值
-->
<param name="actionName">
resulttype/redirectactionAction.action
</param>
</result>
(2)、 例子第一種方式:
<result name="success" type="redirectAction">resulttype/redirectactionAction.action</result>
第二種方式:
<result name="success"type="redirectAction">
<!--
actionName:
請求的action的路徑
namespace:
如果不寫,默認就是請求的action的路徑,如果寫,路徑將被重新賦值
-->
<paramname="actionName">
resulttype/redirectactionAction.action
</param>
</result>
<package name=”ss” namespace=”/csdn/csdn”>
<action=”delete”>
</package>
<package name=”test” namespace=”/csdn”>
<action=”delete”>
</package>
<package name=”sss” namespace=””>
<action=”delete”>
</package>
Action名稱的搜索順序
1、獲得請求路徑的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先尋找namespace為/path1/path2/path3的package,如果存在這個package,則在這個package中尋找名字為test的action,如果不存在這個package則轉步驟3;
3.尋找namespace為/path1/path2的package,如果存在這個package,則在這個package中尋找名字為test的action,如果不存在這個package,則轉步驟4;
4.尋找namespace為/path1的package,如果存在這個package,則在這個package中尋找名字為test的action,如果仍然不存在這個package,就去默認的namaspace的package下面去找名字為test的action(默認的命名空間為空字符串""),如果還是找不到,頁面提示找不到action。
Action原型struts2
Prototype 原型 每次請求都會創建一個新的Action對象
Servlet
Singleton 原型 當第一次請求時,創建servlet對象 之後每次都使用該對象即可。
Servlet的生命周期
創建---init---service---destory