Struts2概述、開發環境搭建

1、概述java

    Struts 2是在WebWork2基礎發展而來的。和struts1同樣同屬於MVC框架。web

          注意:struts 2和struts 1在代碼風格上幾乎不同。apache

 

        Struts 2 相比Struts 1的優勢:編程

一、在軟件設計上Struts 2 沒有像Struts 1那樣跟Servlet API 和 struts API 有着緊密的耦合。Struts 2的應用能夠不依賴於Servlet API和Struts API 。struts2的這種設計屬於無侵入式設計,而struts1卻屬於侵入式設計瀏覽器

二、Struts 2 提供了攔截器,利用攔截器能夠進行AOP編程。架構

三、Struts 2 提供了類型轉換器。咱們能夠把特殊的請求參數轉換成須要的類型。在struts1中,若是咱們要實現一樣的功能,就必須向struts1的底層實現BeanUtil註冊類型轉換器才行。mvc

四、Struts 2 提供支持多種表現層技術,如:JSP 、 freeMarker、Velocity等。app

五、Struts 2 的輸入校驗能夠指定方法進行校驗。框架

六、Struts 2 提供了全局範圍、包範圍和Action範圍的國際化資源文件管理實現。eclipse

 

2、Struts2體系結構

一、Web瀏覽器請求一個資源。

二、過濾器Dispatcher查找方法,肯定適當的Action。

三、攔截器自動對請求應用通用功能,如驗證和文件上傳操做。

四、Action的execute方法一般用來存儲和從新得到信息。

五、結果被返回到瀏覽器。

 

3、Myeclipse搭建Struts 2 開發環境

  

一、  找到開發Struts 2的應用須要用到的jar包。拷到項目lib目錄。

  a)  到http://struts.apache.org/download.cgi#struts221下載struts-2.5-all.zip,下載完後解壓文件,開發struts2應用須要依賴的jar文件在解壓目錄的lib文件夾下。不一樣的應用須要的jar包是不一樣的。

  b)  開發struts2程序最少須要的jar:(通常是下載的該版本struts2 jar包的blank例子中的jar包  以下圖解:

    Struts-core-2.x.x.jar : Struts 2框架的核心類庫

    xwork-2.x.x.jar : XWork類庫,Struts 2 在其上構建

    ognl-2.6.x.jar : 對象圖導航語言(Object Graph Navigation Language),Struts 2 框架經過其讀寫對象的屬性

    freemarker-2.3.x.jar : Struts 2 的UI標籤的模版使用 Freemarker編寫。

    commons-logging-1.1.x.jar : ASF出品的日誌包。Struts2框架使用這個日誌包來支持Log4J和JDK1.4+的日誌記錄

    commons-fileupload-1.2.1.jar : 文件上傳組件,2.1.6版本後必須加入此文件

二、  編寫Struts 2的配置文件。

  • Struts2默認的配置文件爲struts.xml,該文件須要存放在WEB-INF/classes下,開發階段可放在src目錄下。該文件的配置模板以下:(通常同上,在blank例子中copy,保持版本一致
    <?xml version=」1.0」 encoding=」UTF-8」?>
      <!DOCTYPE struts PUBLIC
             "-//Apache Software Foundation//DTD Struts Configuration.3//EN"
             "http://struts.apache.org/dtds/struts-2.3.dtd">
     <struts>
     </struts>

 三、在web.xml中加入Struts 2 MVC啓動框架配置。

  • 因爲web應用是基於請求/響應架構的應用,因此無論哪一個web mvc框架,都須要在web.xml中配置該框架的核心Servlet或Filter ,這樣才闊以讓該框架介入web應用中。
  • 在struts1.x中,struts框架是經過Servlet啓動的。在struts2中,struts框架是經過Filter啓動的。它在web.xml中的配置以下:
    <!-- 定義struts2的核心filter -->
    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
                  <!--自從struts2.1.3之後,下面的FilterDispatcher已經標註爲過期
                  <filter-class>org. apache . struts2.dispatcher.FilterDispatcher</filter-class>> -->
    </filter>
    
    <!-- 讓struts2的核心filter攔截全部請求 -->
    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>

  在StrutsPrepareAndExecuteFilter的init()方法中將會讀取類路徑下默認的配置文件struts.xml完成初始化操做。

注意:struts2讀取到struts2.xml的內容後,以javabean形式存放在內存中,之後struts2對用戶的每次請求處理將使用內存中的數據,而不是每次都讀取struts.xml文件。

相關文章
相關標籤/搜索