1. 程式人生 > >struts常用配置詳解

struts常用配置詳解

1包相關配置

  • 包裝標籤稱為包,這個包與Java的中的包的概念不一致。包為了更好管理行為的配置

1.1包標籤的屬性

  • name:包的名稱,只有在一個專案中不重名即可。
  • extends          :繼承哪個包,通常值為struts-default
  • namespace    :名稱空間,與<action> 標籤中的名稱屬性共同決定訪問路徑。
  • abstract:抽象的,用於其他包的繼承。

1.2名稱空間有三種寫法

  • 帶名稱的名稱空間:namespace =“/ aaa”
  • 跟名稱空間:namespance =“/”
  • 預設名稱空間:namespace =“”

2動的配置

行動標籤配置動作類

2.1 action標籤的屬性

  • name          :與namespace 共同決定訪問路徑
  • class           Action 類的全路徑
  • 方法      
    :執行動作中的哪個方法的方法名,預設值執行
  • converter:用於設定型別轉換器

3常量的配置

在Struts2的框架中,提供了非常多的常量:( default.properties中

可以在struts.xml中,struts.properties,web.xml中配置常量

3.1 struts.xml

<constant name="struts.action.extension" value="action"/>

3.2 struts.properties

struts.action.extension=action

3.3 web.xml

在配置核心過濾器時,在過濾器中加上如下程式碼

<init-param>
    <param-name>struts.action.extension</param-name>
    <param-value>action</param-value>
</init-param>

4分模組開發

<include resource="com/itykd/web/action/struts-demo1.xml"/>

5 Action訪問的配置

預設是訪問action類中的public String execute(){}方法;

5.1通過方法設定

<action name="userFind" class="com.itykd.web.action.UserAction" method="find"></action>
<action name="userUpdate" class="com.itykd.web.action.UserAction" method="update"></action>

5.2萬用字元訪問(最常用)

<action name="user_*" class="com.itykd.web.action.UserAction" method="{1}"></action>

5.3動態方法訪問

  • 首先要開啟動態方法訪問,這裡在struts.xml中中配置
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
  • 動態方法訪問配置
<action name="user" class="com.itykd.web.action.UserAction"></action>
  •  編寫訪問路徑
<a href="${pageContext.request.contextPath}/user!find.action">查詢使用者</a><br/>
<a href="${pageContext.request.contextPath}/user!update.action">更新使用者</a><br/>

6結果頁面的配置 

6.1全域性結果頁面

  • 全域性結果頁面:全域性結果頁面指的是,在包(包)中配置一次,其他的在這個包中的所有的動作只要返回了這個值,都可以跳轉到這個頁面。
<package>
    <global-results>
        <result name="error">/error.jsp</result>
    </global-results>
</package>

6.2區域性結果頁面(區域性和全域性都有返回相同值時,區域性優先)

<action name="user_*" class="com.itykd.web.action.UserAction" method="{1}">
    <result name="success">/success.jsp</result>
</action>

6.3結果標籤

結果用於標籤配置頁面的跳轉在結果標籤上有兩個屬性:

  • name屬性:邏輯檢視的名稱。預設值:success
  • type屬性:頁面跳轉的型別。預設值:dispatcher

6.3.1 name屬性

  • 成功
  • 錯誤
  • 登入
  • INPUT                輸入在某些攔截器中會使用。
  • 沒有

6.3.2 type屬性

  • dispatcher       :預設值,請求轉發。(Action 轉發JSP
  • stream:Struts2中提供檔案下載的功能。
  • redirectAction:重定向。(Action重定向動作)
  • chain:轉發。(動作轉發動作)
  • redirect             :重定向。(Action 重定向JSP

7攔截器的配置

        在封裝下定義攔截器,並將攔截器放入注意:一旦引入了自定義攔截器,預設攔截器棧的攔截器就不執行了

  • 定義攔截器
   <!-- 定義攔截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入攔截器棧 (一旦引入自定義攔截器,預設攔截器棧的攔截器就不執行了)-->
            <interceptor-ref name="defaultStack"/>
            <interceptor-ref name="myInterceptor1"/>
        </action>

 

  • 定義一個攔截器棧
<!-- 定義攔截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
            <!-- 定義攔截器棧 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack"/>
                <interceptor-ref name="myInterceptor1"/>
            </interceptor-stack>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入攔截器棧 (一旦引入自定義攔截器,預設攔截器棧的攔截器就不執行了)-->
            <interceptor-ref name="myStack"/>
        </action>

 

  • 許可權攔截器的配置 
   <!-- 定義攔截器 -->
        <interceptors>
            <interceptor name="myInterceptor1" class="com.itykd.web.interceptor.MyInterceptor1"/>
        </interceptors>
        <action name="interceptorAction1" class="com.itykd.web.action.InterceptorAction1">
            <result name="success">/demo1.jsp</result>
            <!-- 引入攔截器棧 (一旦引入自定義攔截器,預設攔截器棧的攔截器就不執行了)-->
            <interceptor-ref name="myInterceptor1">
                <!-- InterceptorAction1的login方法將放行-->
                <param name="excludeMethods">login</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>
        </action>