框架主要涉及技術:spring + struts2 + hibernate + freemarker
我們先看看struts2 工作原理圖,這樣才方便考慮在設計開發框架時有那些擴充套件點:
actionfilter和其它過濾器
在web.xml配置這些filter在struts自身的filter之前。 包括全域性預設的actionfilter、語言編碼localefilter、重定向urlrewritefilter等等。
strutspreparefilter
struts的action預處理過濾器。我的做法是寫乙個子類繼承它,如corestrutspreparefilter,這樣我可以在子類中實現諸如
動態載入struts.xml和指定目錄指定規則的struts-***.xml等。
strut***ecutefilter
同樣是使用寫子類繼承它,如corestrut***ecutefilter,寫根據條件(如struts相關的配置檔案改動了)重新生成executeoperations
(即dispatcher的高階封裝)。
interceptor
***是struts2的精華。在這裡處理包括異常統一處理、許可權控制、引數設定、訪問歷史和某些特定功能的攔截式儲存等處理。
action
放置若干處理請求的指定包路徑的方法,我設計了baseaction和genericaction,baseaction處理全域性的action公共處理,包括繼承actionsupport,
實現initializingbean、modeldriven(這樣可以做一些初始化操作以及得到struts2模型驅動的相關功能)。
genericaction是基於泛型來寫的,實現了增刪改查之類的公共方法。還有其它若干的專案相關的公共***action,則根據需要設計。
manager
在action的method中,可以呼叫若干個manager方法來實現相關業務,事務是寫在manager層的,用的spring的宣告式事務。
viewmanager
由於系統用的是freemarker模板技術,所以解析模板的方式有兩種:1)通過struts自帶的freemarkermanager;2)通過freemarkertemplateutils
來解析。為了方便擴充套件(比如寫一些自定義的freemarker方法等),我對兩種方式都寫了子類進行擴充套件。
corefreemarkermanager在struts.xml中配置:
corefreemarkertemplateutils則就是乙個工具類了。一般適用於cms、郵件模板解析等。
返回時經過的interceptor
aop的點也就是before和after,而after時的操作一般就是寫日誌了。
Struts2 工作原理
1 客戶端初始化乙個指向servlet容器 例如tomcat 的請求 2 這個請求經過一系列的過濾器 filter 這些過濾器中有乙個叫做actioncontextcleanup的可選過濾器,這個過濾器對於struts2和其他框架的整合很有幫助,例如 sitemesh plugin 5 action...
struts2 工作原理
struts2並不是乙個陌生的web框架,它是以webwork的設計思想為核心,吸收struts1的優點,可以說 struts2是struts1和webwork結合的產物。struts2 的工作原理圖 乙個請求在struts2框架中的處理分為以下幾個步驟 1.客戶端發出乙個指向servlet容器的請...
struts2工作原理
struts2工作原理 程式設計原理 使用者傳送http請求 web伺服器 tomcat 載入web.xml web部署描述檔案 檔案 執行struts核心控制器 strutsprepareandexecutefilter或者filterdispatcher 載入struts.xml檔案,通過請求a...