麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-14 21:06:26
字體:
供稿:網(wǎng)友
個人總結(jié)的Struts2攔截器使用和攔截棧的配置,基于注解的方式

Struts2的攔截器是個好利器!尤其是自定義攔截器,以下是我個人整理的很詳細(xì)的整個流程,希望給大家?guī)韼椭懈靡娊獾南M梢蕴岢鰧氋F的意見。

原理:

a) Web瀏覽器發(fā)送請求

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

c) 自定義interceptor(攔截器)

d) Action

e) Result

struts.xml配置如下:

<package name=”default” namespace=”/” extends=”struts-default”>                    <--所有的配置都應(yīng)放在package中-->    <interceptors>        <-- 所有的攔截器自定義的配置和引用、已經(jīng)攔截棧的定義都應(yīng)放在interceptors中-->        <-- 自定義攔截器 name指定自定義攔截器的引用名稱  class 指定該攔截器的實現(xiàn)類(完整路徑) -->        <interceptor name="sessionCheck" class="com.cqrcb.perinvite.interceptor.AuthorityInterceptor" />                 <-- 自定義攔截棧 name 指定自定義攔截棧的引用名稱 -->                    <interceptor-stack name="sessionCheckStack">                        <-- name為所要引用的攔截器的引用名稱 剛才定義了一個name為 sessionCheck的攔截器,則引用就為 sessionCheck-->                         <-- 每一個自定義的攔截棧都應(yīng)該必須配上defaultStack攔截棧,該攔截棧是Struts2默認(rèn)的攔截棧,里面封裝了一組攔截器--> <interceptor-ref name="defaultStack" />                        <interceptor-ref name="sessionCheck" />        </interceptor-stack>    </interceptors>    < --  配置全局默認(rèn)的Action -- >    <default-action-ref name="IndexAction" />         < -- 配置全局默認(rèn)的result-- >                <global-results>                    <-- 配置token的invalid.token的返回視圖,即當(dāng)頁面重復(fù)提交,頁面將自動轉(zhuǎn)到/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, 轉(zhuǎn)發(fā)跳轉(zhuǎn)到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已經(jīng)包含了自定義攔截器和Struts2的默認(rèn)攔截棧,所以直接引用sessioncheckstack即可-- >                    <interceptor-ref name=" sessionCheckStack "/>                                        <-- 如果直接引用自定義的攔截器,即沒有包含默認(rèn)的攔截棧,則需要引用Struts2的默認(rèn)攔截棧,以下-- >                    <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")//攔截棧的引用,藍(lán)色

自定義攔截器的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;/** * 權(quán)限攔截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,則進行執(zhí)行,即不做攔截            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的自定義攔截器有很多方式,本文的內(nèi)容是前置攔截,即獲取到action的請求所做的攔截。struts2還有后置攔截和中間攔截,這兩種也是很常用的,有時間整理完之后我會發(fā)到博客,大家一起探討。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩一级毛毛片 | 欧美成年视频 | 美女视频大全网站免费 | 亚洲片在线观看 | 毛片在线看免费 | 国产成人精品自拍视频 | 黄色av一区二区三区 | 亚洲第一色片 | 国产啊v在线观看 | 国产精品一区在线免费观看 | 久久草草影视免费网 | 黄在线免费看 | 九九热在线免费观看视频 | 久久久久免费精品国产小说色大师 | 国产美女做爰免费视 | 久久久久久久国产视频 | 一级美女大片 | 毛片免费视频在线观看 | 伊人成人免费视频 | 一级成人黄色片 | 国产性tv国产精品 | 草莓福利社区在线 | 热99re久久免费视精品频软件 | 毛片视频播放 | 九九热精品视频在线免费观看 | 最新av免费网址 | 在线成人免费视频 | 国产成人精品一区在线播放 | 久久精品无码一区二区三区 | 一级毛片手机在线观看 | 国产女同疯狂激烈互摸 | videos韩国 | 国产乱色精品成人免费视频 | 中文字幕www | 国产欧美精品综合一区 | 亚洲第九十九页 | 日韩视频一区二区在线观看 | 国产日韩亚洲 | 日本a大片 | 黄色片网站在线免费观看 | 91在线色|