Struts2的基本流程分析
來源:程序員人生 發布時間:2015-01-16 08:43:24 閱讀次數:3274次
Struts2的基本流程分析
大致上,Struts2框架由3個部份組成,核心控制器StrutsPrepareAndExecuteFilter,業務控制器和用戶實現的業務邏輯
邏輯組件,而在這3個部份里,Struts2框架提供了核心控制器StrutsPrepareExecuteFilter,而用戶需要實現業務控制器和業務邏輯組件
核心控制器StrutsPrepareAndExecuteFilter
StrutsPrepareAndExecuteFilter控制器作為1個Filter運行在Web利用中,它負責
攔截所有的用戶要求,當用戶要求到達時,該Filter會過濾用戶要求,所有要求都會交給Struts框架處理
Struts2框架取得了用戶要求后,將根據要求的名字決定調用那個業務邏輯組件,例如:
對應Login要求,Struts2調用調用名為Login的Action來處理該要求
Struts2利用中Action都被定義在struts.xml文件中,在該文件中定義Action時,定義該Action的name屬性和class屬性
其中name屬性決定該Action處理哪一個用戶要求,而class數據決定該Action的實現類
Struts2用于處理用戶的要求的Action實例,其實不是用戶實現的業務控制器,而Action代理
-由于用戶實現的業務控制器并沒有與Servlet API耦合,明顯沒法處理用戶要求
而Struts2框架提供了系列攔截器,該系列攔截器負責將HttpServletRequestIQ要求中的參數解析出來,傳入到Action中
并回調Action的execute方法來處理用戶要求
明顯,這是典型的AOP(面向切面編程)處理方式
用戶實現的Action類僅僅是Struts2的Action代理的代理目標,用戶實現的業務控制器(Action)則包括了對用戶要求的
處理,用戶的要求數據包括在HttpServletRequest對象,而用戶的Action類不必訪問HttpServletRequest對象,攔截器負責將HttpServletRequest
里的要求數據解析出來,并傳給業務邏輯組件Action實例
業務控制器組件就是用戶實現Action類的實例,Action類里通常包括1個execute方法,該方法返回1個字符串
-該字符串就是1個邏輯視圖名,當業務控制器處理用戶要求后,根據處理結果不同,execute()方法返回不同的字符串-每一個字符串對應1個視圖名
開發出系統所需要的業務控制器后,還需要配置Struts2的Action,即需要配置Action的以下3個部份的定義:
(1)Action所處理的URL
(2)Action組件所對應的實現類
(3)Action返回的邏輯視圖和物理視圖資源之間的對應關系
每一個Action都要處理1個用戶要求,而用戶要求總是包括指定的URL,當StrutsPrepareAndExecutorFilter攔截到
用戶要求后,根據要求的URL和Action處理URL之間對應關系來處理轉發
Struts2的模型組件
通常,MVC框架里的業務控制器會調用模型組件的方法來處理用戶要求,也就是說,業務邏輯控制器不會對用戶要求
進行任何實際處理,用戶要求終究由模型組件負責處理,業務控制器只是中間負責調度的調度器,這也是稱Action為控制器的緣由
當控制器需要獲得業務邏輯組件實例是,通常其實不會直接獲得業務邏輯組件實例,而是通過工廠模式來獲得邏輯組件實例,或利用其它IOC容器
(如Spring容器)來管理業務邏輯組件實例
Struts2的視圖組件(FreeMaker,Velocity和XSTL等)當Struts2的控制器返回邏輯視圖名時,邏輯視圖并未與任何的視圖
技術管理,僅僅是返回返回1個字符串,該字符串作為邏輯視圖名
在Struts.xml文件中配置Action時,不但需要指定Action的name屬性和class屬性,還有為Action元素指定系列<result.../>子元素。每一個<result.../>子元素定義1個邏輯
視圖和物理視圖之間的映照,Struts2默許使用jsp作為視圖資源
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------