1、J2EE平臺的三大核心技術是 Servlet、JSP和EJB
2、Web程序日益復雜,單純某種技術無法做到快速開發、快速驗證和快速部署的最佳境界。人們開始嘗試著將已有的Web技術綜合起來,形成完整的開發框架或應用模型。
3、控制器調用視圖來顯示模型的數據。(之前會把請求轉發給模型,讓模型來處理業務,并返回數據)
4、模型調用視圖,顯示模型數據的變更。
5、控制器提高了應用程序的靈活性和可配置性。
6、將MVC運用到應用程序中,會帶來額外的工作量,增加應用的復雜性,所以MVC不適合小型應用程序。
7、struts-config.xml用于建立Controller和Model之間的關系。
8、Velocity Template,使UI組件可重用
9、struts2是基于webwork框架的,它比strus1.x更簡單,更靈活。
10、攔截器是Struts2的核心內容之一。
11、struts.xml是Struts 2框架的核心配置文件
12、Struts2中的Action只是一個普通Java類(POJO),這是同Struts 1.X的重要區別之一。
13、Struts2的優點之一就是提供了標簽庫。使用標簽庫,可以使代碼變得簡潔、可讀性大大提高,并給開發人員帶來了巨大的便利。
14、Struts2不再支持內建的IOC容器,而是全面使用Spring的IoC容器。
15、FilterDispatcher是Struts的核心控制器。可以和 bpm聯合嗎?
FilterDispatcher詢問ActionMapper是否需要調用某個Action來處理請求,如果需要,FilterDispatcher會把請求交給ActionProxy,他會通過ConfigurationManager詢問框架的配置文件,找到需要調用的Action。在調用前,ActionInvocation會加載Action相關的所有攔截器。
最后,ActionInvocation根據struts.xml配置找到對應的返回結果result。
16、Struts2框架的目的就是使用Action來調用業務邏輯模塊。Action中不實現任何業務邏輯,只是負責組織調度業務邏輯組件。
(業務控制器Action一般情況下不是直接創建業務邏輯組件實例,而是通過使用工廠模式或從Spring容器中獲得業務邏輯組件實例,這樣可以提高系統的性能)。
17、Struts1只能支持JSP作為視圖資源,Struts2支持其他視圖技術,如FreeMarker,Velocity等。
每個result有一個type屬性,指定了對應的視圖資源類型,如果不寫,會使用默認的type類型,即JSP類型的視圖資源。
18、Struts2的配置文件時整個框架的聯系紐帶,也是降低各類組件耦合程度的一種手段。
19、Struts2最大的特點之一,是實現了Action和Servlet API的分離。在Struts1中要復雜很多。
pojo的exec()不用任何參數,只是返回一個字符類型的值。
20、ValueStack和OGNL是Struts2引入的新東西,Webwork中原來就有,但是Strus1中是沒有的。
值棧ValueStack和OGNL的一個簡單并且強大特性在于,他們不屬于Strus2框架中的任何一個組件,它是獨立的,與框架分離。
無論攔截器還是result,都可以通過OGNL來訪問值棧。
值棧存在于局部線程的ActionContext中。
Struts2框架在處理每一個用戶請求的時候,都建立一個單獨的線程進行處理,值棧也是伴隨著局部線程而存在的。在線程存在過程中,可以隨意訪問值棧,這就保證了值棧的安全性。
21、FreeMarker頁面不能直接通過URL訪問,這樣訪問看到的只能是 freemarker頁面源碼。。。
一定要通過action進行訪問。只有通過action才能把 模板和數據模型結合起來,并返還給用戶。
22、Struts配置DTD定義。 (文檔格式定義)
<!ELEMENT struts (package|include|bean|constant)*> // 表示package, include, bean和constant并沒有順序要求。
<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)> // 這里使用的是逗號,實際上是有順序要求的?如default-action-ref必須要定義在action之前。。。
/////////////////////////////////////////////////////////////////////////////////////////////
1、form里,原來提交的action是指向一個JSP頁面的。現在是指向某個的Struts Action,可以根據輸出,有選擇地指向多個JSP頁面,或者也可以采用其他視圖技術。
2、ActionContext是Action運行的上下文環境(通過繼承ActionSupport,可以直接獲得該方法)。可以通過靜態方法getContext獲得 Action的上下文。之后可以通過getApplication()和getSession()對Application和Session的參數進行訪問。
2、Web程序日益復雜,單純某種技術無法做到快速開發、快速驗證和快速部署的最佳境界。人們開始嘗試著將已有的Web技術綜合起來,形成完整的開發框架或應用模型。
3、控制器調用視圖來顯示模型的數據。(之前會把請求轉發給模型,讓模型來處理業務,并返回數據)
4、模型調用視圖,顯示模型數據的變更。
5、控制器提高了應用程序的靈活性和可配置性。
6、將MVC運用到應用程序中,會帶來額外的工作量,增加應用的復雜性,所以MVC不適合小型應用程序。
7、struts-config.xml用于建立Controller和Model之間的關系。
8、Velocity Template,使UI組件可重用
9、struts2是基于webwork框架的,它比strus1.x更簡單,更靈活。
10、攔截器是Struts2的核心內容之一。
11、struts.xml是Struts 2框架的核心配置文件
12、Struts2中的Action只是一個普通Java類(POJO),這是同Struts 1.X的重要區別之一。
13、Struts2的優點之一就是提供了標簽庫。使用標簽庫,可以使代碼變得簡潔、可讀性大大提高,并給開發人員帶來了巨大的便利。
14、Struts2不再支持內建的IOC容器,而是全面使用Spring的IoC容器。
15、FilterDispatcher是Struts的核心控制器。可以和 bpm聯合嗎?
FilterDispatcher詢問ActionMapper是否需要調用某個Action來處理請求,如果需要,FilterDispatcher會把請求交給ActionProxy,他會通過ConfigurationManager詢問框架的配置文件,找到需要調用的Action。在調用前,ActionInvocation會加載Action相關的所有攔截器。
最后,ActionInvocation根據struts.xml配置找到對應的返回結果result。
16、Struts2框架的目的就是使用Action來調用業務邏輯模塊。Action中不實現任何業務邏輯,只是負責組織調度業務邏輯組件。
(業務控制器Action一般情況下不是直接創建業務邏輯組件實例,而是通過使用工廠模式或從Spring容器中獲得業務邏輯組件實例,這樣可以提高系統的性能)。
17、Struts1只能支持JSP作為視圖資源,Struts2支持其他視圖技術,如FreeMarker,Velocity等。
每個result有一個type屬性,指定了對應的視圖資源類型,如果不寫,會使用默認的type類型,即JSP類型的視圖資源。
18、Struts2的配置文件時整個框架的聯系紐帶,也是降低各類組件耦合程度的一種手段。
19、Struts2最大的特點之一,是實現了Action和Servlet API的分離。在Struts1中要復雜很多。
pojo的exec()不用任何參數,只是返回一個字符類型的值。
20、ValueStack和OGNL是Struts2引入的新東西,Webwork中原來就有,但是Strus1中是沒有的。
值棧ValueStack和OGNL的一個簡單并且強大特性在于,他們不屬于Strus2框架中的任何一個組件,它是獨立的,與框架分離。
無論攔截器還是result,都可以通過OGNL來訪問值棧。
值棧存在于局部線程的ActionContext中。
Struts2框架在處理每一個用戶請求的時候,都建立一個單獨的線程進行處理,值棧也是伴隨著局部線程而存在的。在線程存在過程中,可以隨意訪問值棧,這就保證了值棧的安全性。
21、FreeMarker頁面不能直接通過URL訪問,這樣訪問看到的只能是 freemarker頁面源碼。。。
一定要通過action進行訪問。只有通過action才能把 模板和數據模型結合起來,并返還給用戶。
22、Struts配置DTD定義。 (文檔格式定義)
<!ELEMENT struts (package|include|bean|constant)*> // 表示package, include, bean和constant并沒有順序要求。
<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)> // 這里使用的是逗號,實際上是有順序要求的?如default-action-ref必須要定義在action之前。。。
/////////////////////////////////////////////////////////////////////////////////////////////
1、form里,原來提交的action是指向一個JSP頁面的。現在是指向某個的Struts Action,可以根據輸出,有選擇地指向多個JSP頁面,或者也可以采用其他視圖技術。
2、ActionContext是Action運行的上下文環境(通過繼承ActionSupport,可以直接獲得該方法)。可以通過靜態方法getContext獲得 Action的上下文。之后可以通過getApplication()和getSession()對Application和Session的參數進行訪問。