分析的servlet
客戶端--->web容器-->web.xml -->servlet來處理 ----->model-->數據庫
<--------------------------------|
request.setAttribute(“username”,username);
//轉發
request.getDis(“manager/index.jps”).forward(request,response);
---在jsp頁面中 ${username}
//重定向
response.sendRiedirect();
分析 struts2
客戶端----->web容器--->web.xml-->struts2過濾器--->struts.xml--->Action--->model--->數據庫
<------------------------------------------------------------------------------------|
Action 要想把數據 傳遞給jsp
private String username;
public String getUsername(){return username;}
通過什麼方式傳遞
<result
type="dispatcher" name="success">/manager/index.jsp</result>
Jsp =---〉 ${username}
Struts2中結果集類型
1、 每個action方法都返回一個String類型的值,struts一次請求返回什麼值是由這個值確定的。
2、 在配置文件中,每一個action元素的配置都必須有result元素,每一個result對應一個action的返回值。
3、 Result有兩個屬性:
name:結果的名字,和action中的返回值一樣,默認值爲success;
type:響應結果類型,默認值爲dispatcher.
m
在struts2-core-2.3.8.jar下面找到struts-default.xml文件中,如下面所示:
說明:
1、 從上述可以看出總共10種類型
2、 默認類型爲ServletDispatcherResult即轉發。
3、 結果類型可以是這10種結果類型的任意一種。
Dispatcher類型
(1)、 說明
Dispatcher類型是最常用的結果類型,也是struts框架默認的結果類型。
(2)、 例子
頁面參照:/manager/index.jsp
Action參照:AdminAction
配置文件:struts.xml
在配置文件中,可以有兩種寫法:
下面的圖說明了location的來歷:
查看源碼:
}
父類中:
有一個屬性 並且提供了set方法
}
6.2.2 Redirect類型
(1)、 說明
Redirect屬於重定向。如果用redirect類型,則在reuqest作用域的值不能傳遞到前臺。
redirectAction類型
(1)、說明
1、 把結果類型重新定向到action
2、 可以接受兩種參數
a) actionName: action的名字
b) namespace:命名空間
(2)、 例子
請求的路徑
http://localhost:8080/project/csdn/csdn/delete.action?name=aa
Namespace=”csdn/csdn/”
<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