初學struts2的一些感想1
最近這兩三天學習了struts2,感覺都快遺忘了繁瑣的servlet,主要是struts2在傳遞數據方面十分的強大。struts2總結來說,就是前臺的界面,后臺的類。也就是說前臺用來顯示界面的jsp和后臺的繼承了ActionSupport的java類,并且通常是一個jsp對應一個java類,struts2通過struts.xml來配置對應jsp的java類。
當jsp訪問java類時,會由本質上是過濾器的控制器來控制其訪問,首先會創建相應的Action對象(繼承了ActionSupport的java類的一個實例)和ActionContext對象,ActionContext對象中存有Action對象的所有屬性以及其他的包裝了request、session、application的map,并且會將ActionContext對象綁定到當前的線程上面,便于對數據的訪問。然后層層調用一系列的本質上是java類的攔截器來進行復雜的處理,在這些攔截器中就有一個java類來進行參數的傳遞,它會將jsp中表單項中名字相同的條目的值通過ActionContext自動賦給java類中名字相同的變量,從而完成了數據從jsp到java類的映射,之后調用執行java類的特定方法并返回一個表示狀態的字符串,然后再一層層返回直到控制器,控制器根據返回字符串在struts.xml中找到相應的jsp等進行跳轉處理,并可以讀取ActionContext中的數據以顯示相應的結果。
這樣在struts2中就不需要進行復雜的讀取參數的過程,靠配置一個簡單的struts2.xml就能實現參數的傳遞。