struts常用配置詳解
阿新 • • 發佈:2018-12-24
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>