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的配置文件。
<?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啓動框架配置。
<!-- 定義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文件。