文档章节

Struts2拦截器interceptor

i
 iamchenli
发布于 2016/03/06 00:11
字数 644
阅读 6
收藏 0

interceptor拦截器:面向切面编程。通过在Struts.xml文件中配置,在调用action的相关方法前先调用。自定义的拦截器,可以直接返回一个result定位到视图,不经过action的处理;也可以交给拦截器链处理。

自定义拦截器

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
 *	
 */
//继承 AbstractInterceptor 类
public class AuthorityInterceptor extends AbstractInterceptor{
  //重写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();
    }  
  
}




拦截器在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>              
		<result name="error">/error.jsp</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=sessionCheck/>
		<interceptor-ref name=”defaultStack”/>
		<-- 一个Action中只要有一个defaultStack即可,如果引用的拦截栈有了defaultStack,则就不必再引用defaultStack,否则,引之-- >

		<result name="success">
			Success.jsp
		</result>
		<result name="input">
			input.jsp
		</result>
    </action>
</package>




© 著作权归作者所有

i
粉丝 11
博文 54
码字总数 22119
作品 0
广州
程序员
私信 提问
Struts2 拦截器 Interceptor结构

Interceptor结构 让我们再来回顾一下之前我们曾经用过的一张Action LifeCycle(生命周期)的图: 图中,我们可以发现,Struts2的Interceptor一层一层,把Action包裹在最里面。这样的结构,大概...

拷贝忍者卡卡习
2016/11/02
16
0
Struts2拦截器的使用 (详解)

如何使用struts2拦截器,或者自定义拦截器。特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了struts2自带的che...

Idiot_s_Sky
2014/02/05
34
0
Java程序员从笨鸟到菜鸟之(四十六)细谈struts2(八)拦截器的实现原理及源码剖析

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和res...

长平狐
2012/11/12
57
0
struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

 理解       Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起...

冬至饮雪
2016/02/15
0
0
struts登录案例和自定义拦截器

struts登录案例: struts.xml <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.custom.i18n.resources" value="messages"></constant> <package name="ba......

day戴
2014/07/24
274
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
31分钟前
4
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
51分钟前
5
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
52分钟前
5
0
HTML5+CSS3从入门到精通 中文pdf版​

本文转载于:专业的前端网站➵HTML5+CSS3从入门到精通 中文pdf版 HTML5+CSS3从入门到精通是通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于专业指...

前端老手
54分钟前
6
0
聊聊nacos client的ConfigFilterChainManager

序 本文主要研究一下nacos client的ConfigFilterChainManager IConfigFilterChain nacos-1.1.3/api/src/main/java/com/alibaba/nacos/api/config/filter/IConfigFilterChain.java public in......

go4it
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部