struts2和struts1认识
1.Struts 2基本流程
Struts 2框架本身可以大致分3部分:核心控制器FilterDispatcher、業務總監Action與用戶實現企業業務邏輯組件。
核心控制器FilterDispatcher是Struts 2框架的基礎。包括了框架內部的控制流程和處理機制。業務控制器Action和業務邏輯組件是須要用戶來自己實現的。用戶在開發Action和業務邏輯組件的同一時候,還須要編寫相關的配置文件,供核心控制器FilterDispatcher來使用。 Struts 2的工作流程相對于Struts 1要簡單,與WebWork框架基本同樣,所以說Struts 2是WebWork的升級版本號。
基本簡要流程例如以下:
1、client瀏覽器發出HTTP請求。
2、依據web.xml配置,該請求被FilterDispatcher接收。
3、依據struts.xml配置。找到須要調用的Action類和方法,并通過IoC方式。將值注入給Aciton。
4、Action調用業務邏輯組件處理業務邏輯,這一步包括表單驗證。
5、Action運行完成,依據struts.xml中的配置找到相應的返回結果result,并跳轉到相應頁面。
6、返回HTTP響應到client瀏覽器。
?
2.核心控制器:FilterDispatcher
?FilterDispatcher是Struts 2框架的核心控制器。該控制器作為一個Filter執行在Web應用中,它負責攔截全部的用戶請求。當用戶請求到達時,該Filter會過濾用戶請求。
假設用戶請求以action結尾,該請求將被轉入Struts 2框架處理。
Struts 2框架獲得了*.action請求后,將依據*.action請求的前面部分決定調用哪個業務邏輯組件,比如。對于login.action請求。Struts 2調用名為login的Action來處理該請求。
?Struts 2應用中的Action都被定義在struts.xml文件里。在該文件里定義Action時,定義了該Action的name屬性和class屬性。當中name屬性決定了該Action處理哪個用戶請求,而class屬性決定了該Action的實現類。
?Struts 2用于處理用戶請求的Action實例,并非用戶實現的業務控制器。而是Action代理——由于用戶實現的業務控制器并沒有與Servlet API耦合,顯然無法處理用戶請求。
而Struts 2框架提供了系列攔截器,該系列攔截器負責將HttpServletRequest請求中的請求參數解析出來,傳入到Action中,并回調Action 的execute方法來處理用戶請求。
?顯然。上面的處理過程是典型的AOP(面向切面編程)處理方式。
用戶實現的Action類不過Struts 2的Action代理的代理目標。
用戶實現的業務控制器(Action)則包括了對用戶請求的處理。用戶的請求數據包括在 HttpServletRequest對象里,而用戶的Action類無需訪問HttpServletRequest對象。
攔截器負責將 HttpServletRequest里的請求數據解析出來。并傳給業務邏輯組件Action實例。
3.業務控制器
? 業務控制器組件就是用戶實現Action類的實例。Action類里通常包括了一個execute方法,該方法返回一個字符串——該字符串就是一個邏輯視圖名。當業務控制器處理完用戶請求后,依據處理結果不同。execute方法返回不同字符串?? ——每一個字符串相應一個視圖名。
?程序猿開發出系統所須要的業務控制器后,還須要配置Struts 2的Action。即須要配置Action的例如以下三個部分定義:
?—? Action所處理的URL。
?—? Action組件所相應的實現類。
?—? Action里包括的邏輯視圖和物理資源之間的相應關系。
?每一個Action都要處理一個用戶請求。而用戶請求總是包括了指定URL。當Filter Dispatcher攔截到用戶請求后,依據請求的URL和Action處理URL之間的相應關系來處理轉發。
4.Struts 2的模型組件
? 實際上,模型組件已經超出了MVC框架的覆蓋范圍。
對于Struts2框架而言,通常沒有為模型組件的實現提供太多的幫助。
?通常指系統的業務邏輯組件。而隱藏在系統的業務邏輯組件以下的,可能還包括了DAO、領域對象等組件。
?通常,MVC框架里的業務控制器會調用模型組件的方法來處理用戶請求。
也就是說。業務邏輯控制器不會對用戶請求進行不論什么實際處理。用戶請求終于由模型組件負責處理。業務控制器僅僅是中間負責調度的調度器。這也是稱Action為控制器的原因。
?當控制器須要獲得業務邏輯組件實例時。通常并不會直接獲取業務邏輯組件實例。而是通過工廠模式來獲得業務邏輯組件的實例。或者利用其它IoC容器(如Spring容器)來管理業務邏輯組件的實例。
5.Struts 2的視圖組件
?Struts 2已經改變了Struts 1僅僅能使用JSP作為視圖技術的現狀,Struts 2同意使用其它的模板技術,如FreeMarker、Velocity作為視圖技術。
?當Struts 2的控制器返回邏輯視圖名時。邏輯視圖并未與不論什么的視圖技術關聯,不過返回一個字符串。該字符串作為邏輯視圖名。
?當我們在struts.xml文件里配置 Action時。不僅須要指定Action的name屬性和class屬性,還要為Action元素指定系列result子元素,每一個result子元素定義一個邏輯視圖和物理視圖之間的映射。前面所介紹的應用都使用了JSP技術作為視圖。故配置result子元素時沒有指定type屬性。默認使用JSP 作為視圖資源。
假設須要在Struts 2中使用其它視圖技術,則能夠在配置result子元素時,指定對應的type屬性就可以。
比如,假設須要使用FreeMarker,則為result指定值為freemarker的type屬性;假設想使用Velocity模板技術作為視圖資源。則為result指定值為velocity的type屬性……
6.Struts 2的執行流程
? 經過上面介紹。我們發現Struts2框架的執行流程很類似于WebWork框架的流程。
?提示? 在Struts 2的官方網站,我們能夠找到例如以下說法:Essentially,Struts 2.0 is the technical equivalent of WebWork 2.3。Aside fromthe package and property renaming。it isn't much different than,say,migratingfrom WebWork 2.1 to 2.2——意思是說:Struts 2.0技術等同于WebWork 2.3框架,除了包和屬性被改名外。從WebWork 2.2遷移到Struts 2不會比從WebWork 2.1遷移到WebWork 2.2更復雜。
?這里我們能夠看到,Struts 2事實上就是WebWork 2.2的升級版。這也就不難理解:為什么WebWork和Struts 2如此相似!
?Struts Struts僅僅是一個MVC框架(Framework),用于高速開發JavaWeb應用。Struts實現的重點在C(Controller)。包含ActionServlet/RequestProcessor和我們定制的Action,也為V(View)提供了一系列定制標簽(CustomTag)。但Struts差點兒沒有涉及M(Model),所以Struts能夠採用JAVA實現的不論什么形式的商業邏輯。 Spring Spring是一個輕型容器(light-weight container)。其核心是Bean工廠(BeanFactory)。用以構造我們所須要的M(Model)。在此基礎之上,
Spring提供了AOP(Aspect-OrientedProgramming, 面向層面的編程)的實現,用它來提供非管理環境下申明方式的事務、安全等服務。對Bean工廠的擴展ApplicationContext更加方便我們實現J2EE的應用;DAO/ORM的實現方便我們進行數據庫的開發;Web MVC和Spring Web提供了Java Web應用的框架或與其它流行的Web框架進行集成。就是說可將兩者一起使用,達到將兩者自身的特點進行互補。
Hibernate Hibernate是一個免費的開源Java包,它使得與關系數據庫
打交道變得十分輕松。就像您的數據庫中包括每天使用的普通Java對象一樣,同一時候不必考慮怎樣把它們從神奇的數據庫表中取出(或放回到數據庫表中)。
它解放了您。使您能夠專注于應用程序的對象和功能,而不必操心怎樣保存它們或稍后怎樣找到它們。 EJB 一個技術規范:EJB 從技術上而言不是一種"產品" EJB 是一種標準描寫敘述了構建應用組件要解決的: 可擴展 (Scalable) 分布式 (Distributed) 事務處理 (Transactional) 數據存儲 (Persistent) 安全性 (Secure) ANT -. Ant簡單介紹
?Ant是一個類似make的工具,用來編譯/執行/測試java程序。 構建、包裝和公布過程中差點兒每一件事都能夠由Ant的任務來處理. 二.Ant的安裝及配置 你能夠從Jakata站點下載預編譯的ANT,解壓至任一文件夾; 設置自己的環境變量。即ANT_HOME,指向解壓文件夾; 設置JAVA_HOME環境變量,指向jdk的根文件夾; 三:用ant管理項目 Ant一啟動就會自己主動地載入一個叫做Build.xml的項目配置文件。假設想給這個項目配置文件取別的名字。你能夠使用buildfile標記來執行ant,就像以下這樣: ant -buildfile Project_configuration.xml 主要特點: 使用xml文件作為配置文件,即build.xml; 可與junit作無縫整合,達到系統測試、編譯到公布的功能。 強大、具體的報表功能; 控制靈活。可自己定義要運行的任務組合。
?
7 struts2實現MVC
Struts採用jsp作為MVC的視圖,由ActionServlet詳細指定的action動作類作為控制器即MVC中的C,負責視圖與模型之間的交互。控制器的每一個入口點都由名為struts-config.xml的配置文件設置。該文件把來自視圖的請求映射為特定的JAVA類以進行對應的處理。控制器還指定下一個視圖的位置。
Struts中的模型主要指的就是javabean。它是模型的代表,主要封裝數據和業務邏輯。
8 Struts1的處理流程:
控制器進行初始化工作,讀取配置文件,為不同的Struts模塊初始化相應的ModuleConfig對象。控制器接收Http請求,并從ActionConfig中找出相應于該請求的Action子類,假設沒有相應的Action,控制器直接將請求轉發給JSP或者靜態頁面,否則控制器將請求分發至詳細的Action類進行處理。在控制器調用詳細的Action的Execute方法之前,ActionForm對象將利用Http請求中的參數來填充自已。還能夠在 ActionForm類中調用Validate方法來檢查請求參數的合法性。而且能夠返回一個包括全部錯誤信息的ActionErrors對象。運行詳細的的Execute的方法。它負責運行相應的業務邏輯。
運行完后。返回一個ActionForward對象,控制器通過該 ActionForward對象來進行轉發工作。也能夠把Action要處理的業務邏輯封裝在JavaBean中,假設系統中還有EJB,那么通過 JavaBean調用EJB以完畢業務處理。假設沒有EJB,那么就直接在JavaBean數據庫連接,數據庫相關的操作。
?
版權聲明:本文博客原創文章,博客,未經同意,不得轉載。
總結
以上是生活随笔為你收集整理的struts2和struts1认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读《从0到1》
- 下一篇: 谷歌在外贸中的实战解析