1. 程式人生 > >struts 框架介紹 原理透析 struts概念說明

struts 框架介紹 原理透析 struts概念說明

1Struts2框架介紹

  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?
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6.     <packagename="example"namespace="/example"extends="struts-default">
  7.         <actionname="HelloWorld"class="struts2.action.HelloWorldAction">
  8.             <resultname="success">/success.jsp</result>
  9.         </action>
  10.     </package>
  11. </struts>
  程式碼說明:訪問/example/HelloWorld.action對應執行struts2.action包下面的HelloWorldAction類;預設情況下執行類中的execute方法,如果想指定方法,需要在<action>標籤中新增method屬性;<result>標籤配置結果跳轉路徑。根據Action類中方法返回的String字串,去匹配result標籤中的name值,進行跳轉。

  3)在web.xml檔案中配置核心控制器

[html] view plain copy  print?
  1. <!-- 配置框架的核心排程器 -->
  2. <filter>
  3.     <filter-name>struts2</filter-name>
  4.     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7.     <filter-name>struts2</filter-name>
  8.     <url-pattern>/*</url-pattern>
  9. </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、國際化的應用有了一個初步的瞭解。一開始學習的時候沒啥感覺。等學完以後才發現學習這個框架與學習JavaScriptjQuery有點相似,jqueryjavascript的一個封裝好的框架,說框架說的其實有點太專業說白了就是javascript的函式庫別人封裝好的就像我們自己封裝的SQLHelper一樣。而Struts呢是Java封裝的一個函式庫。Struts為我們封裝優化了MVC,使得MVC使用起來更高效,更快捷。就像JQuery一樣。JQuery幫我們封裝了Javascript讓我們使用起來更加方便。