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

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

個人總結的Struts2攔截器使用和攔截棧的配置,基于注解的方式

2019-11-14 21:06:26
字體:
來源:轉載
供稿:網友
個人總結的Struts2攔截器使用和攔截棧的配置,基于注解的方式

Struts2的攔截器是個好利器!尤其是自定義攔截器,以下是我個人整理的很詳細的整個流程,希望給大家帶來幫助,有更好見解的希望可以提出寶貴的意見。

原理:

a) Web瀏覽器發送請求

b) 首先通過一組Struts2默認的攔截棧 dispatcher (或者 ServletFilter)

c) 自定義interceptor(攔截器)

d) Action

e) Result

struts.xml配置如下:

<package name=”default” namespace=”/” extends=”struts-default”>                    <--所有的配置都應放在package中-->    <interceptors>        <-- 所有的攔截器自定義的配置和引用、已經攔截棧的定義都應放在interceptors中-->        <-- 自定義攔截器 name指定自定義攔截器的引用名稱  class 指定該攔截器的實現類(完整路徑) -->        <interceptor name="sessionCheck" class="com.cqrcb.perinvite.interceptor.AuthorityInterceptor" />                 <-- 自定義攔截棧 name 指定自定義攔截棧的引用名稱 -->                    <interceptor-stack name="sessionCheckStack">                        <-- name為所要引用的攔截器的引用名稱 剛才定義了一個name為 sessionCheck的攔截器,則引用就為 sessionCheck-->                         <-- 每一個自定義的攔截棧都應該必須配上defaultStack攔截棧,該攔截棧是Struts2默認的攔截棧,里面封裝了一組攔截器--> <interceptor-ref name="defaultStack" />                        <interceptor-ref name="sessionCheck" />        </interceptor-stack>    </interceptors>    < --  配置全局默認的Action -- >    <default-action-ref name="IndexAction" />         < -- 配置全局默認的result-- >                <global-results>                    <-- 配置token的invalid.token的返回視圖,即當頁面重復提交,頁面將自動轉到/error.jsp頁面并提示 -- >                    <result name="invalid.token">/error.jsp</result>                    <result name="error">/error.jsp</result>                                        <-- 配置name為backhome的resule,重定向為IndexAction-- >                    <result name="backhome"  type="redirectAction">IndexAction</result>                    <-- 配置name為testChain的resule, 轉發跳轉到testAction -- >                    <result name="testChain"  type="chain ">testAction</result>    </global-results>    < --使用攔截器有兩種方式,annoction(注解)和xml配置,以下是XML配置-->                <action name="testAction" class="com.cqrcb.perinvite.resume.action.testAction">                    <-- 在此Action訪問之前引入sessionCheckStack攔截棧 name為攔截棧定義的引用名稱-- >                    <-- 此sessionCheckStack已經包含了自定義攔截器和Struts2的默認攔截棧,所以直接引用sessioncheckstack即可-- >                    <interceptor-ref name=" sessionCheckStack "/>                                        <-- 如果直接引用自定義的攔截器,即沒有包含默認的攔截棧,則需要引用Struts2的默認攔截棧,以下-- >                    <interceptor-ref name=”testInter”/>                    <interceptor-ref name=”defaultStack”/>                                        <-- 一個Action中只要有一個defaultStack即可,如果引用的攔截棧有了defaultStack,則就不必再引用defaultStack,否則,引之-- ><result name="success">                            Success.jsp                        </result>                        <result name="input">                            input.jsp                        </result>    </action></package>

annoction注解中使用攔截器和攔截棧

//直接在類名稱的上端寫入即可,value中指定要引入的攔截器的名稱即可@InterceptorRef(value="token")//攔截棧的引用,藍色

自定義攔截器的javabean

package com.cqrcb.perinvite.interceptor; import com.cqrcb.perinvite.logon.action.IndexAction;import com.netbank.pub.vo.core.PbClientInfoVO;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;/** * 權限攔截Action * @author wangyupeng *   *///繼承 AbstractInterceptor 類public class AuthorityInterceptor extends AbstractInterceptor{     PRivate static final long serialVersionUID = 4546936882066035745L;     //重寫intercept方法    public String intercept(ActionInvocation invocation) throws Exception {                 //獲取Action的攔截路徑        ActionContext ax = invocation.getInvocationContext();         //獲取Action對象          Object action = invocation.getAction();         // 對IndexAction不做該項攔截   action instanceof IndexAction 解釋為如果Action的實例為IndexAction        if (action instanceof IndexAction) {              //如果是IndexAction,則進行執行,即不做攔截            return invocation.invoke();          }         //獲取session中key為pinfo的對象        PbClientInfoVO pinfo =(PbClientInfoVO) ax.getSession().get("pinfo");        if(pinfo==null){            //如果pinfo為null,則返回全局result為backhone的視圖            return "backhome";        }        //如果都不為false,則不做攔截        return invocation.invoke();    }       }

struts2的自定義攔截器有很多方式,本文的內容是前置攔截,即獲取到action的請求所做的攔截。struts2還有后置攔截和中間攔截,這兩種也是很常用的,有時間整理完之后我會發到博客,大家一起探討。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵德县| 马尔康县| 土默特右旗| 永清县| 舒兰市| 色达县| 诏安县| 福安市| 阳东县| 疏附县| 安新县| 孟村| 南丰县| 含山县| 会同县| 黎川县| 固安县| 原阳县| 利津县| 龙口市| 谷城县| 桂东县| 北票市| 焉耆| 靖安县| 临夏市| 明水县| 武平县| 常宁市| 铜梁县| 化州市| 盐边县| 大新县| 合江县| 通化县| 饶平县| 永仁县| 阿勒泰市| 当涂县| 聂荣县| 永寿县|