1、執(zhí)行流程
2、namespace
3、action
4、JSP之間跳轉路徑問題
5、動態(tài)方法調(diào)用DMI
6、通配符
7、在action中用屬性接收參數(shù)
8、在action中用Domain Model(域模型)接收參數(shù)
9、訪問web元素——用容器或IoC取得Map類型的request、session和application
10、訪問web元素——用容器或IoC取得HTTP真實類型的request、session和application
11、默認action
1、執(zhí)行流程
當客戶端在瀏覽器中訪問URL地址
http://localhost:8080/_struts2_00_action/hello_action
URL地址的請求會通過HTTP協(xié)議發(fā)送給Tomcat
Tomcat收到請求后會找到相應的Web Application
_struts2_00_action
并且讀相應的web.xml文檔
被Struts2的監(jiān)聽器監(jiān)聽到

接下來通過namespace在struts.xml中查到相應的package
找到相應的action
轉到相應的result
?最后轉到hello.jsp

Struts2可以使得客戶端的請求和最后的展現(xiàn)頁面分開。
2、namespace
namespace決定了action的訪問路徑,默認為"",可以接收所有路徑的action訪問,但是位列其他的namespace之后。
可以寫為/,/xxx,/xxx/yyy,對應的action訪問路徑/action,/xxxaction,/xxx/yyy/action
最好是用模塊命名。
3、action
訪問action時,通過namespace的package找到對應action和對應的action類


通過action類execute()方法的返回值找到對應的result的name(result不指定name的話,默認為SUCCESS)
也可不調(diào)用默認的execute()方法,通過指定其他任意方法,建議使用動態(tài)方法調(diào)用DMI。
每次訪問必定new一個新的action
4、JSP之間跳轉路徑問題:
當JSP頁面訪問別的頁面時,它不會看JSP真正的路徑在哪里,它只看服務器映射在地址欄的URL地址。
所以不推薦使用相對路徑,建議JSP頁面中所有鏈接全部使用絕對路徑。
在JSP中使用request獲取為佳。
5、動態(tài)方法調(diào)用DMI
調(diào)用xx下hello_action的fff()方法,只要此方法返回值是String類型
也可通過method參數(shù)指定固定的方法,但不推薦使用,更推薦使用通配符方法。
http://localhost:8080/_struts2_02_DMI/xx/hello_action!fff

6、通配符
?* 和{ }的寫法
分別訪問鏈接
http://localhost:8080/_struts2_03_TongPeiFu/hello_add
http://localhost:8080/_struts2_03_TongPeiFu/hello_delete
在namespace中未找到相應的action,但有 * 匹配的action。




7、在action中用屬性接收參數(shù)
用鏈接傳遞兩個參數(shù)s和i
http://localhost:8080/_struts2_04_parameter_property/hello_action?s=s&i=9
在action類中定義兩個同名屬性,并設置set方法。Struts2將在調(diào)用action的方法前,自動調(diào)用set方法給兩個屬性賦值。


8、在action中用Domain Model(域模型)接收參數(shù)
http://localhost:8080/_struts2_05_parameter_DomainModel/hello_action?u.no=11&u.name=zb



9、訪問web元素——用容器或IoC取得Map類型的request、session和application
IoC:

跳轉到action類后 由Struts2注入賦值



容器:

10、訪問web元素——用容器或IoC取得HTTP真實類型的request、session和application
容器:

IoC:略
11、默認action
當action不存在時,找到默認action。
