struts2

Struts2的使用步驟

手動導入:

1. 創建Web項目。

2. 導入Strutrs的幾個必須包(7jar)。

3. src目錄下,創建struts.xml配置文件(名字和路徑都不能改)。

4. web.xml配置文件中,添加Struts的支持(配置一個filter過濾器)。

自動導入(Myeclipse8.0以上的版本):

 

類型轉換

1. Struts2中類型轉換分爲兩種:

a) 手動(自定義)轉換器

b) 自動轉換器

2. 手動(自定義)轉換器(針對特殊屬性)

a) action的類中,必須繼承ActionSupport類。

b) 定義轉換器的類,繼承DefaultTypeConvert,重寫convertValue()方法。

c) 創建配置文件(注意:1.文件名必須是:Action的類名-conversion.properties ; 2. 必須將配置文件存放在Action所在的包中。)

3. 自動轉換器(常用的方式)

基本數據類型+String類型都是可以自動轉換。

對象類型自動轉換:在input中使用:對象名.屬性名

Struts2的輸入驗證

一.驗證分類:

1. 服務器端驗證(Java代碼來完成驗證(Struts的內置驗證框架,可以完成服務器端驗證))。

2. 客戶端驗證(js驗證——在客戶端執行,執行的時候依賴與客戶度(手動js驗證,jquery驗證框架進行驗證))

二.Struts的內置驗證框架:

Struts2中驗證有兩種方式:

1. 手動驗證。

2. 配置驗證框架,自動驗證。

三.內置驗證框架使用步驟:

1. 需要驗證的Action必須繼承自ActionSupport類。

2. 創建驗證配置文件。

要求:a) 配置文件必須和action在同一目錄。

      b) 文件名的格式必須是:Action類名-validation.xml(驗證Action中的所有方法) 

                             Action類名-訪問Action的名字-validation.xml(只會驗證Action中指定的方法)

3. 查看內置驗證器:xwork-XXXXX.jar目錄中(找到default.xml配置文件)

特別需要注意:

1. 使用了驗證器之後,如果驗證失敗;必須配置<result name=input></result>表示驗證失敗之後,跳轉的頁面。

2. 如果jsp頁面中使用了,Struts的標籤;那麼必須讓這個jsp頁面必須經過struts的核心過濾器,進行過濾;否則頁面不能正常解析struts的標籤。(web.xml 中配置過濾器,過濾  *.jsp)

3. 基本數據類型,不能使用Struts的內置驗證,建議使用包裝類。

四.手動驗證步驟:

1. 繼承ActionSupport,重寫validate()方法。

在執行Action中具體的方法之前,會先執行validate()方法;如果有錯誤,則返回input指定的頁面。(有錯誤:super.addFiledError()

手動驗證總結:

1. 可以在實體中的setXxx()方法進行控制。

2. validate()方法中進行驗證。

深入Struts2

Struts2運行原理:

請求  --- >自定義過濾器----> filterdispatcher ------> ActionProxy(代理,讀取struts.xml的配置文件)---->ActionInvocation(action的調用者,調用具體的Action;在調用之前經過一系列的攔截器)——>執行完Action之後,跳轉到對應的頁面。

注意:struts中的所有編碼處理都是i18n攔截器處理,所有的表單數據處理都是在系統默認攔截器中獲取。

Struts.xml配置文件詳解:

<constant name="" value=""></constant>

<!-- 常量:系統默認配置的量(名字不可改) -->

<!-- 常用的常量:struts.custome.i18n.resources(國際化常量) -->

<!-- 常用的常量:struts.i18n.encoding(編碼方式常量,系統默認採用utf-8編碼) -->

動態方法調用:

注意:1. 在配置<action>的時候,不用指定具體的方法(不用寫method=XXX”);

  2. 在請求action的路徑指定需要執行的方法名即可。(格式:action!方法名.action

使用通配符進行模糊匹配:

<action name="*Calc" class="com.zuxia.action.TestAction" method="{1}" >

   <result name=名字>{1}.jsp</result>

</action>

注意:使用“*”號表示模糊匹配的值。{1}表示佔位符,在運行的過程中,被通配符所代替。

      在這個Action的配置文件中,都可以使用{1}佔位。

Struts2對返回結果頁面進行配置:

<result name=方法的返回值 type=””>頁面路徑</result>

type=”” 表示頁面跳轉的方式,默認表示內部跳轉。

type=redirect 表示頁面使用外部跳轉,注意外部跳轉request中的數據將會丟失。

type=redirectAction 表示跳轉的頁面將會是一個Action

<result type= redirectAction>

   <param name=actionName>action的名字</param>

   <param name=namespace>命名空間的名字</param>

</result>

原樣輸出指定的頁面:

<result name="ok" type="plainText">

<param name="location">test.jsp</param>

<param name="charSet">utf-8</param>

</result>

全局結果配置:

<!-- 配置全局的結果,跳轉頁面 -->

<global-results>

<result name="error">test.jsp</result>

<result name="ok">index.jsp</result>

</global-results>

注意:必須在action的最前面。

全局異常處理:

<global-exception-mappings>

<exception-mapping result="返回的結果名" exception="異常類型"></exception-mapping>

</global-exception-mappings>

在異常處理頁面,顯示異常的信息:

<%@ taglib uri="/struts-tags" prefix="s" %>

異常的信息:

<s:property value="exceptionStack"/>

<interceptors>

<interceptor name="firstinter" class="com.zuxia.interceptor.FristInterceptor" />

<interceptor-stack name="testStack">

<interceptor-ref name="firstinter" />

<interceptor-ref name="defaultStack" />

</interceptor-stack>

</interceptors>

actin中調用使用如下方式:

<action …………>

<interceptor-ref name="testStack" />

</action>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章