国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts2-16 自定義攔截器

2019-11-08 02:47:06
字體:
來源:轉載
供稿:網友

一、Struts2攔截器概述

攔截器(Interceptor是 Struts2.0的核心組成部分;Struts2攔截器在訪問某個Action方法之前或之后實施攔截;Struts2攔截器是可插拔的,其是攔截器是AOP(面向切面編程)思想的一種實現;Struts2的很多功能都是構建在攔截器基礎之上的,如類型轉換、國際化、輸入驗證、文件的上傳與下載等;攔截器棧(Interceptor Stack):將攔截器按一定的順序聯結成一條鏈,在訪問被攔截的方法時, Struts2攔截器鏈中的攔截器會按其定義順序被依次調用。

二、Struts2自帶攔截器

這里寫圖片描述 這里寫圖片描述


三、Interceptor接口

public interface Interceptor extends Serializable { /** * 該方法將在攔截器被創建后立即被調用,在攔截器的生命周期內只被調用一次; * 功能:可以在該方法中對相關資源進行必要的初始化。 */ void init(); /** * 每攔截一個請求,該方法就會被調用一次。 */ String intercept(ActionInvocation invocation) throws Exception; /** * 該方法將在攔截器被銷毀之前調用,在攔截器的生命周期內也只被調用一次。 */ void destroy();}

 具體說明如下:

每個攔截器都是實現了com.opensymphony.xwork2.interceptor.Interceptor接口的java類;Struts會依次調用為某個Action而注冊的每一個攔截器的interecept()方法;每次調用interecept()方法,Struts均會傳遞一個ActionInvocation接口的實例;ActionInvocation接口代表一個給定Action的執行狀態,攔截器可以從該類的對象中獲得與該Action相關的Action對象和Result對象;在完成攔截器自己的任務之后,攔截器將調用ActionInvocation對象的invoke()方法前進到Action處理流程的下一個環節;AbstractInterceptor類實現了Interceptor接口,并為init()方法和destroy()方法提供了空白實現。

四、自定義攔截器

4.1 自定義攔截器類

 可以直接實現Interceptor接口或選擇繼承于AbstractInterceptor抽象類。核心示例代碼如下:

package com.qiaobc.struts.interceptors;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class MyInterceptor extends AbstractInterceptor { PRivate static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { System.out.println("before invocation.invoke() ..."); String result = invocation.invoke(); System.out.println("after invocation.invoke() ..."); return result; }}

4.2 配置自定義攔截器類

 可以在struts.xml文件中配置自定義的攔截器類,核心配置代碼如下:

<interceptors> <interceptor name="test" class="com.qiaobc.struts.interceptors.MyInterceptor"></interceptor> </interceptors><action name="testToken" class="com.qiaobc.struts.token.TokenAction"> <interceptor-ref name="test"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <result>/success.jsp</result> <result name="invalid.token">/token-error.jsp</result></action>

 注意:在自定義攔截器中可以選擇不調用ActionInvocation的invoke()方法,則后續攔截器和Action方法將不會被調用;同時,Struts會渲染自定義攔截器intercept()方法返回值所對應的result。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚东县| 磐安县| 吉木萨尔县| 乌什县| 合江县| 东台市| 孝义市| 长丰县| 武汉市| 蓬安县| 乃东县| 北辰区| 六枝特区| 永州市| 洞口县| 天峨县| 曲水县| 增城市| 闽侯县| 澎湖县| 仁怀市| 苍南县| 石门县| 鸡泽县| 邹平县| 昂仁县| 瓮安县| 金湖县| 东阳市| 新巴尔虎右旗| 巢湖市| 蒙阴县| 高淳县| 玉龙| 柳江县| 溆浦县| 英山县| 宣化县| 三台县| 紫阳县| 留坝县|