`
cynan168
  • 浏览: 39292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2核心 拦截器配置

阅读更多

Struts2 拦截器详细配置过程

1: 所有拦截器的超级接口 Interceptor ,Action 去实现这个接口 ;

 Interceptor 它其中有三个方法 (init(),destroy() ,interceptor()):

      Init() 方法 : 在服务器起动的时候加载一次 , 并且只加载一次 ;

      Destroy() 方法 : 当拦截器销毁时执行的方法 ;

      Interceptor() 方法 : 其中里边有一个参数 invocation

public String intercept(ActionInvocation invocation) throws xception {

       System. out .println( "interceptor!!" );

       String result=invocation.invoke();

       return result;

    }

Invocation.invoke() 是如果只有一个拦截器执行完这个方法后 , 会返回给视图 , 如果有多个拦截器 , 它顺序的执行完所有的拦截器 , 才返回给视图 .

2: 可以在系统初始化中给拦截器指定默认的参数 ( 也包括了定义拦截器方式 ) 如下 :

    在拦截器类中把 hello 当做属性 set/get 方式注入到拦截器类中 ;

      < interceptors >

           <!-- 先定义拦截器 -->

           < interceptor name = "myInterceptor" class = "com.zzz.struts2.interceptor.MyInterceptor" >

              <!-- 指定系统初始化给拦截器的参数 -->

              < param name = "hello" > 张钊钊 </ param >

           </ interceptor >

           <!-- 加到自己设置的拦截器栈里边去 -->

           < interceptor-stack name = "myStack" >

              < interceptor-ref name = "myInterceptor" >

              </ interceptor-ref >

              < interceptor-ref name = "defaultStack" ></ interceptor-ref >

           </ interceptor-stack >

       </ interceptors >

       <!-- 改变系统默认的拦截器 , 改成自己的默认拦截器 , 并且一个系统只能有一个默认的拦截器 , 这样这个拦截器栈会默认应用到所有的 Action 上去 -->

       < default-interceptor-ref name = "myStack" >

       </ default-interceptor-ref >

       也可以在使用拦截器的时候给它设置参数 :

       就是在一个 action reslut 下面配置上如下 :

    < action name = "register"

           class = "com.zzz.struts2.action.RegisterAction" >

           < result name = "success" > /success.jsp </ result >

           <!-- result 它其中还有一个信息转发类型 type="" 记住,如果不转向 JSP ,转向图表,可以改变 type="" -->

           < result name = "input" > /register.jsp </ result >

          

           < interceptor-ref name = "myInterceptor" >

              < param name = "hello" > welcome </ param >

           </ interceptor-ref >

           < interceptor-ref name = "myStack" ></ interceptor-ref >

       </ action >

2. 拦截器 , 拦截器栈和默认的拦截器之间的关系

1: 拦截器和拦截器栈是一个级别的 , 也就是说一个拦截器栈中包括许多拦截器 , 一个拦截器栈中还可以包括许多拦截器栈 , 配置如下方式 :

< interceptors >

           <!-- 先定义拦截器 -->

           < interceptor name = "myInterceptor" class = "com.zzz.struts2.interceptor.MyInterceptor" >

              <!-- 指定系统初始化给拦截器的参数 -->

              < param name = "hello" > 张钊钊 </ param >

           </ interceptor >

           <!-- 加到自己设置的拦截器栈里边去 -->

           < interceptor-stack name = "myStack" >

              < interceptor-ref name = "myInterceptor" >

              </ interceptor-ref >

              < interceptor-ref name = "defaultStack" ></ interceptor-ref >

           </ interceptor-stack >

       </ interceptors >

拦截器的使用 :1. 先定义 ;2. 在引用使用 ;

< interceptor name = "myInterceptor" class = "com.zzz.struts2.interceptor.MyInterceptor" >

< interceptor-ref name = "myInterceptor" >

              </ interceptor-ref >

 2:struts2 中有一个系统默认的拦截器栈是 defaultStack, 如果你手动引用自己的拦截器 , 系统默认的拦截器栈将不起作用 ; 这样必需手动引入系统的拦截器栈 < interceptor-ref name = "defaultStack" >

              </ interceptor-ref >

如果想改变系统默认的拦截器栈 , 可以这样配置 :

< default-interceptor-ref name = "myStack" >

</ default-interceptor-ref > 其中 myStack 是自己定义的拦截器栈名字 ;

如果拦截器栈中有多个拦截器 , 在执行 action 之前的顺序跟配置拦截器的顺序一致 , 而在 action 之后执行的顺序是相反的 ;

 

3: 抽象的拦截器类 AbstractInterceptor

1:Interceptor 这个超级拦截器接口 , 有三方法需要实现 , 但是如果不想使用 init();

    destroy() 方法 , 可以去继承这个抽象拦截器类 ;

它的使用跟上边的没有什么区别 ;

 

4: 方法过滤拦截器 MethodFilterInterceptor

1: 上边的拦截器都要是针对整个 action , 如果针对某个方法进行拦截可以去继承这个类 ;

它的使用跟上边的使用方法差不多 , 只是需要要配置它对那个方法进行拦截 , 方法过滤拦截器最好不要配置到自己设置默认的拦截器栈里边 , 自己手动配置 .

interceptor-ref name = "myInterceptor3" >

              < param name = "includeMethods" > execute </ param >

              < param name = "excludeMethods" > execute </ param >

           </ interceptor-ref >

           < interceptor-ref name = "defaultStack" ></ interceptor-ref >

其中 includeMethods ,excludeMethods 是固定写法 : includeMethods  包含拦截那些方法 , 多个方法需要用 ”,” 隔开 ; excludeMehtods 是排除拦截的那些方法 ;

5: 鉴听器 PreResultListener 接口

1: 它的鉴听点在拦截器执行完某个 action 方法后 , 在渲染视图之前做一些事情;让某个类去实现这个接口;

然后向需要它的拦截器中注册进去如下代码:

public class MyInterceptor3 extends MethodFilterInterceptor {

    private static final long serialVersionUID = 3756655410194005443L;

    @Override

    protected String doIntercept(ActionInvocation invocation ) throws Exception {

       // 把鉴听器注册到拦截中去 ;

       invocation .addPreResultListener( new MyListener());

       System. out .println( "my Interceptor3" );

       String result=arg0.invoke();

       System. out .println( "my interceptor3 finshed!" );

       return result;

    }

}

 

引:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html

分享到:
评论

相关推荐

    一个Struts2的核心拦截器例子

    核心拦截器是Struts2框架的重要组成部分,它们允许开发者在动作执行前后插入自定义逻辑,以实现如日志、权限验证、数据校验等常见功能。下面将详细讲解Struts2的核心拦截器以及如何在项目中使用它们。 1. **Struts2...

    Struts2拦截器及其用法详细说明

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2 拦截器

    2. **配置拦截器**:在`struts.xml`配置文件中定义拦截器,指定其执行顺序和关联的Action。 3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到...

    Struts2拦截器源码

    在Struts2框架中,拦截器扮演着至关重要的角色,它们是实现业务逻辑、验证、日志记录等功能的核心组件。下面将详细探讨Struts2拦截器的源码及其工作原理。 首先,理解拦截器的定义:拦截器是AOP(面向切面编程)的...

    struts2学习笔记十(第10讲.Struts2的核心 拦截器)

    本篇将深入探讨Struts2的核心拦截器以及其工作原理。 在Struts2中,拦截器是一个实现了`Interceptor`接口的类,它通过在动作执行前后插入额外的处理逻辑,实现了对请求处理的增强。拦截器链是由多个拦截器按照特定...

    struts2 拦截器实例

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...

    难经3:Struts2,拦截器拦不住Result?

    1. **配置问题**:如果Struts2的配置文件(struts.xml或struts.properties)中拦截器配置有误,可能会导致拦截器链无法正常工作,从而影响到Result的执行。 2. **拦截器逻辑错误**:如果自定义的拦截器在处理过程中...

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    Struts2拦截器实现权限控制demo

    在Struts2的核心配置文件`struts.xml`中,我们可以定义拦截器链,指定哪些拦截器应用于哪些Action。 权限控制是web应用中不可或缺的一部分,它可以防止未经授权的用户访问特定资源。在Struts2中,我们可以通过拦截...

    struts2拦截器

    在Struts2中,拦截器(Interceptor)是核心功能之一,用于增强应用的功能和处理业务逻辑。拦截器是基于AOP(面向切面编程)的概念,可以在动作执行前后插入额外的操作,比如日志记录、权限检查、数据验证等。 标题...

    详解Struts2拦截器

    通过对Struts2拦截器的深入分析,我们可以看出拦截器不仅是Struts2框架的核心组成部分,也是实现代码重用、提高代码质量的有效手段。理解并合理运用拦截器,对于提升项目的开发效率和代码质量具有重要意义。

    struts2拦截器应用小例子

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在动作执行前后插入自定义的逻辑,如日志、权限检查、数据验证等。本示例将探讨如何在Struts2中使用拦截器。 首先,我们需要理解Struts2拦截器的...

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    Struts2拦截器源程序

    总结来说,Struts2拦截器是框架的核心部分,它们提供了一种灵活的方式,以实现各种功能,如日志记录、性能监控、权限控制等,同时保持代码的整洁和模块化。通过对`98struts201`文件的深入研究,我们可以更好地掌握...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 ...通过以上介绍,我们可以了解到Struts2拦截器的基本使用方法及配置方式,这对于理解Struts2框架的工作机制以及优化应用架构具有重要意义。

    struts2中拦截器的使用

    拦截器是Struts2框架的核心组件之一,它们在Action调用前后执行,提供了诸如日志记录、权限验证、数据校验等额外功能,极大地提高了代码的可复用性和可维护性。 在Struts2中,拦截器的使用主要基于两个方面:配置...

    Struts2的拦截器的小例子程序

    1. **内置拦截器**:Struts2提供了多种内置拦截器,例如`modelDriven`、`servletConfig`、`chain`、`debugging`等,这些拦截器已经实现了常用的功能,可以直接在配置文件中引用使用。 2. **自定义拦截器**:对于...

    Struts2 拦截器详细配置过程

    2. **拦截器配置**: - 在Struts2配置文件中定义拦截器,比如创建一个名为`myInterceptor`的拦截器,指定其类为`com.zzz.struts2.interceptor.MyInterceptor`,并设置系统初始化参数,如`张钊钊&lt;/param&gt;`。 - 创建...

    struts2.X 拦截器源码

    Struts2.X 拦截器是Apache Struts框架的核心组件之一,它是基于拦截器模式实现的,使得开发者能够方便地扩展和定制应用程序的行为。在Struts2中,拦截器扮演着中间件的角色,它在Action执行前后进行处理,可以进行如...

Global site tag (gtag.js) - Google Analytics