Struts2基礎1

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)聽到

Struts2的監(jiān)聽器

接下來通過namespace在struts.xml中查到相應的package

找到相應的action

轉到相應的result

?最后轉到hello.jsp

namespace為/的package

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類

找到xx.action_class
action類一般繼承ActionSupport類并重寫execute()方法

通過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。

*替代的部分用{1}按順序標記
找到相應的method
不同的訪問URL
最后展現(xiàn)相應的頁面

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方法給兩個屬性賦值。

參數(shù)類型自動轉換,一一對應的規(guī)則只和set方法的后綴屬性名相匹配
驗證傳遞結果


8、在action中用Domain Model(域模型)接收參數(shù)

http://localhost:8080/_struts2_05_parameter_DomainModel/hello_action?u.no=11&u.name=zb

接收參數(shù)的不是屬性,而是自動new一個實體類的對象賦值給action類的對象屬性
用來接收的實體類
傳參檢驗


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

IoC:

隨便提交一個表單

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


實現(xiàn)RequestAware, SessionAware, ApplicationAware三個接口,并重寫三個set方法。

在JSP中獲取結果
最后顯示頁面

容器:

action類改變



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

容器:

request可以取得頁面的值

IoC:略




11、默認action

當action不存在時,找到默認action。




最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容