Struts2總結
接觸Struts2已經接近一個月,與同樣接觸沒有很長時間的Struts相比,也確實感覺到了很多令人耳目一新的感覺。今天有必要對Struts2的學習做一下總結。以前曾經寫過一篇博文《Struts,Struts2WebWork的比較》,對這三種框架進行了綜合性地敘述和比較。現在是對Struts2的總結。

Struts2的處理流程如下:

1.使用者請求對Web應用執行某個動作後,Web瀏覽器將要求某些資源的請求傳送到Web伺服器。

2.伺服器小程式過濾器排程程式接到請求後,分析請求,然後確定呼叫相應的動作,提供資源。

3.在Action被執行之前,經配置後把一些常見功能(如驗證、工作流或者檔案上傳)作用到請求上的一組攔截器上,可自動作用到該請求上。

4Action類的一個新例項被建立,然後執行動作方法,用於把資訊儲存到資料庫,或從資料庫獲取資訊。

5.結果顯示輸出——無論輸出的是HTML、影像、PDF還是其他某種格式。

6.然後,請求按照相反順序通過攔截器傳送。返回的請求允許執行其他的處理或者清理操作。

7.最後,容器把輸出傳送到瀏覽器。

 

Struts2Struts相比的的特點

1.struts2所用到的技術就是webwork的技術,它所用到的表示式語言是ognl語言,這是種非常強大的物件導航語言。(ognl-2.6.11.jar

2: struts2中不使用actionform管理表單,在struts2中用的action,整合了strtus中的actionactionform

3.struts2中是通過標籤來對錶單和實體bean進行管理的,在struts2中提供了一套標籤非常靈活。

 

構建Struts2應用的步驟:

1.       將所需Struts2 jar包拷貝到WEB工程的/WEB-INF/lib目錄下。
2.       配置web.xml檔案,增加Struts2的對映。web.xml檔案配置如下:

 

    <filter-mapping>

       <filter-name>characterEncoding</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

   <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>

web.xml中定義了一個struts2FilterDispathcer(攔截器:Struts2 技術的核心)的filter FilterDispatcher用來初始化struts2並且處理所有的Web請求。
3.       編寫Action類,DAObean類,整合HibernateSpring框架。
Struts.xml中的配置如下:
<?xml version=“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>

 

    <constant name=“struts.enable.DynamicMethodInvocation” value=“false” />

    <constant name=“struts.devMode” value=“false” />

    <constant name=“struts.custom.i18n.resources” value=“globalMessages”/>

    <!– 上傳檔案大小 –>

    <constant name=“struts.multipart.maxSize” value=“5242880” />

     <!—避免Team工作時系統資源的爭奪 –>

    <include file=“struts-example.xml”/>

    <include file=“struts-login.xml”/>

 

 

 

    <include file=“struts-personal.xml”/>

   

    <package name=“default” extends=“struts-default”>

   

      <interceptors>

       <interceptor class=“com.cumt.web.filter.LoginInterceptor” name=“loginInterceptor” />

       <interceptor-stack name=“CheckLogin”>

             <interceptor-ref name=“defaultStack” />

             <interceptor-ref name=“loginInterceptor” />

       </interceptor-stack>

      </interceptors>

   

  

    <!– 這裡放全域性的 –>

    <global-results>

       <result name=“login”>/loginError.jsp</result>

       <result name=“error”>/error.jsp</result>

       <result name=“index” type=“redirect”>Index.action</result>

       <result name=“addLeader” type=“redirect”>/public/addLeader.jsp</result>

       <result name=“addDepartment”

 

 

    </global-results>

   

     <action name=“Index” >

          <result name=“success”>/main.jsp</result>

           <interceptor-ref name=“CheckLogin” />

     </action>

   

   </package>

 

</struts>

 

Struts-login.xml中的配置如下:
<?xml version=“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>

 

    <package name=“login” namespace=“” extends=“default”>

      

 <action name=“Login*” method=“{1}” class=“LoginAction”>

            <result name=“input”>/login.jsp</result>

            <result type=“redirectAction”>Index</result>

        </action>     

 

    </package>

</struts>

4.       Struts2的型別轉換,輸入校驗,核心攔截器,國際化,標籤庫以及對Spring,Hibernate,JSF的整合以後有時間還會做一個總結,大家可以參看這樣一本書:

 

最後給大家推薦本書三揚科技編著,電子工業出版社出版:《開發者突擊:Struts2核心技術與JavaEE框架整合開發實戰》