struts 框架介紹 原理透析 struts概念說明
1,Struts2框架介紹
Struts2框架是MVC流程框架,適合分層開發。框架應用實現不依賴於Servlet,使用大量的攔截器來處理使用者請求,屬於無侵入式的設計。
2,Struts2框架的流程原理
1)請求先到達Filter中央控制器
2)然後為Action建立代理類
3)將各個服務存放在攔截器中,執行完攔截器後再去執行action類行action類,action類呼叫service,再呼叫dao
4)得到結果字串,建立result物件
5)轉向相應的檢視。
程式流程圖如下:
3,框架的使用
框架為我們做好了封裝,使用起來就按照步驟,配置幾個xml檔案就行拉。
1)匯入jar包
2)拷貝struts.xml檔案
將拷貝的配置檔案放在根目錄src下。struts.xml檔案主要是配置請求路徑對應action類的,以及結果跳轉路勁。
[html] view plain copy print?- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
-
"http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <packagename="example"namespace="/example"extends="struts-default">
- <actionname="HelloWorld"class="struts2.action.HelloWorldAction">
- <resultname="success">/success.jsp</result>
- </action>
- </package>
- </struts>
3)在web.xml檔案中配置核心控制器
[html] view plain copy print?- <!-- 配置框架的核心排程器 -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
4、原理
客戶端請求到ActionSeverlet,ActionSeverlet負責截URL進行分發分發到每一個Action上,Action負責和Model打交道然後把相關資訊返回到ActionSeverlet ,ActionSeverlet在返回到jsp。
5、總結。
Struts體系結構實現了MVC設計模式的概念,它將Model、View和Controller分別對映到Web應用中的元件。Controller負責控制流程,由ActionServlet負責讀取struts-config.xml,並使用ActionMapping來查詢對應的Action;Model由ActionForm來構建;View是由JSP和Struts提供的自定義標籤來實現。
Struts有五個核心類:
ActionSvervlet:
用來接收使用者請求和狀態改變,以及發出檢視選擇。當ActionServlet接收到HTTP Request的時候,
呼叫process()方法,將Request()轉發給RequestProcessor來處理。
在一般情況下,我們不需要自己實現或者修改ActionServlet類,僅僅通過在web.xml中進行配置直接
使用就可以了。在某些情況下,我們可以自己擴充套件ActionServlet類,從ActionServlet繼承,實現自己的
ActionServlet。
ActionMapping:
ActionMapping是ActionConfig的子類,實質上是對struts-config.xml的一個對映,從中可以取得所有配
置資訊。
Action:
控制器的一部分,用於模型互動,執行狀態改變或狀態查詢,高數ActionServlet下一個選擇的檢視。
Action類是實現整個體系的核心部分,它在客戶請求、介面表示和業務邏輯之間起到一個橋樑的作用。
每一個Action是用來執行一個業務操作。
ActionForward:
ActionForward是對struts-config.cml配置的mapping元素的forward屬性的包裝。在Action的excute方法
中返回一個ActionForward類。ActionForward把配置檔案中forward部分的資訊包裝起來,減少了應用程式
和物理資源資訊之間的耦合性。
ActionForm:
用來儲存使用者表單資訊,它的所有屬性應該滿足get和set對應。對於一些複雜的系統可以採用
DynaActionForm來構造動態的Form。
以上是Struts的核心類,通過我查閱資料下面讓我們從使用者操作的角度來理解當一個ActionServlet接收到一個客戶請求時的流程,如下圖:
6、感受。
通過Struts的學習對Struts有了一個基本的瞭解,對Struts的基本原理有了一定的掌握,還有對Struts框架中的標籤庫,scope屬性,ActionForm、國際化的應用有了一個初步的瞭解。一開始學習的時候沒啥感覺。等學完以後才發現學習這個框架與學習JavaScript和jQuery有點相似,jquery是javascript的一個封裝好的框架,說框架說的其實有點太專業說白了就是javascript的函式庫別人封裝好的就像我們自己封裝的SQLHelper一樣。而Struts呢是Java封裝的一個函式庫。Struts為我們封裝優化了MVC,使得MVC使用起來更高效,更快捷。就像JQuery一樣。JQuery幫我們封裝了Javascript讓我們使用起來更加方便。