重写拦截器和自定义拦截器

1):重写拦截器的方式

重写拦截比较简单首先确定重写的拦截器:

例如:DefaultWorkflowInterceptor拦截器

I:找到DefaultWorkflowInterceptor的源代码 复制源代码

II:在自己创建的工程里加入DefaultWorkflowInterceptor的整个包的路径

com.opensymphony.xwork2.interceptor

创建一个类DefaultWorkflowInterceptor张贴复制DefaultWorkflowInterceptor的源代码

这样就可以重写源码代码  根据自己的需求

当程序查找引用包的时候首先在classpath搜索 ,所以在工程里的重写的拦截器优先

每个拦截器都是实现了

init: 该方法将在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次. 可以在该方法中对相关资源进行必要的初始化
interecept: 每拦截一个请求, 该方法就会被调用一次.
destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.

Struts 会依次调用为某个 Action 而注册的每一个拦截器的 interecept 方法.
每次调用 interecept 方法时, Struts 会传递一个 ActionInvocation 接口的实例.
ActionInvocation: 代表一个给定 Action 的执行状态, 拦截器可以从该类的对象里获得与该 Action 相关联的 Action 对象和 Result 对象. 在完成拦截器自己的任务之后, 拦截器将调用 ActionInvocation 对象的 invoke 方法前进到 Action 处理流程的下一个环节.
AbstractInterceptor 类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现

举例

I:首先创建一个类名字:LoginInterceptor 且继承AbstractInterceptor类

II:重写intercept方法

@Override

public String intercept(ActionInvocation invocation) throws Exception {

//在这里就可以写 你要做的逻辑判断

return invocation.invoke();

}

III:在配置文件中进行配置加载 自定义拦截器

<interceptors>

<interceptor name= "loginInterceptor" class="survey.interceptors.LoginInterceptor" >

</interceptor>

<interceptor-stack name= "crudStack">

//放在这个位置会首先执行,放在paramsPrepareParamsStack拦截器栈后面则会等paramsPrepareParamsStack栈的拦截器都执行完了在执行这个loginInterceptor

位置影响着执行顺序

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

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

</interceptor-stack>

</interceptors>

//设置为默认默认引用的拦截器栈

< default-interceptor-ref name="crudStack"></ default-interceptor-ref >

时间: 2024-11-01 13:03:22

重写拦截器和自定义拦截器的相关文章

WebServices中使用cxf开发日志拦截器以及自定义拦截器

首先下载一个cxf实例,里面包含cxf的jar包.我下的是apache-cxf-2.5.9 1.为什么要设置拦截器? 为了在webservice请求过程中,能动态操作请求和响应数据, CXF设计了拦截器. 2.拦截器分类 1. 按所处的位置分:服务器端拦截器,客户端拦截器 2. 按消息的方向分:入拦截器,出拦截器 3. 按定义者分:系统拦截器,自定义拦截器 3.拦截器API Interceptor(拦截器接口) AbstractPhaseInterceptor(自定义拦截器从此继承) Loggi

struts2内置拦截器和自定义拦截器详解(附源码)

一.Struts2内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特 性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常的工作和运行.Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现.大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与 拦截器链的配置.内置拦截器虽然在struts2中都定义了,但是并不是都起作用的.因为并不是所有拦截器都被加

flask之web网关、三件套、配置、路由(参数、转化器及自定义转化器)、cbv、模板语言、session

1.wsgiref.py from wsgiref.simple_server import make_server def mya(environ, start_response): print(environ) print(start_response) start_response('200 OK', [('Content-Type', 'text/html')]) if environ.get('PATH_INFO') == '/index': with open(r'index.htm

springMVC --拦截器流程详细,使用和自定义拦截器

先看看拦截器都做些什么: 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(PageView)等. 2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面: 3.性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录): 4.通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Loca

Apache CXF自定义拦截器

为什么设计拦截器?1.为了在webservice请求过程中,能动态操作请求和响应数据,CXF设计了拦截器 拦截器分类: 1.按所处的位置分:服务器端拦截器,客户端拦截器. 2.按消息的方向分:入拦截器,出拦截器. 3.按定义者分:系统拦截器,自定义拦截器. 客户端添加日志拦截器 package com.client.interceptor; import java.util.List; import javax.xml.namespace.QName; import org.apache.cxf

flume自定义反序列化器deserializer

需求背景: 在利用flume进行日志收集的时候,错误信息会将堆栈多行打印,需要将多行信息合并成一行,包装成一个event进行传输. 解决思路: 解决上述需求可以通过自定义拦截器和自定义反序列化器来实现.网上关于自定义拦截器的资料比较多,但考虑到拦截器的定位和使用场景,拦截器不应用于多个event拆分组合,并若flume有并发处理的话,不能保证读取event是顺序的.查阅资料发现,通过自定义flume的反序列化器更加合理和安全. 实现步骤: 1:新建一个类,实现 EventDeserializer

Java内存管理-掌握自定义类加载器的实现(七)

勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分析了ClassLoader的类加载相关的核心源码,也简单介绍了ClassLoader的设计思想,读源码相对来说是比较枯燥的,还是这个是必须要走的过程,学习源码中的一些思想,一些精髓,看一下大神级人物是怎么写出那么牛逼的代码.我们能够从中学到一点点东西,那也是一种进步和成长了.本文基于上一篇文章内容,手把手写一个自定义类加载器,并且通过一些简单的案例(场景)让我们更加细致和静距

Java类加载器及Android类加载器基础

引子 Android插件化与热更新技术日渐成熟,当你研究这些技术时会发现类加载器在其中占据重要地位.Java语言天生就有灵活性.动态性,支持运行期间动态组装程序,而这一切的基础就是类加载器. Java中的类加载器 Java灵活性和动态性的原因 Java源代码被编译器编译成字节码,即从.java文件编译为.class文件,而.class文件就是通过类加载器加载到虚拟机内存中的. 虚拟机的类加载(Class Loading)过程分为加载.链接(验证.准备.解析).初始化.使用.卸载等过程.这里仅考虑

struts2学习笔记---自定义拦截器

什么是拦截器? struts2中拦截器分为Struts2定义好的拦截器和自定义的拦截器.其作用是在一个Action执行之前进行拦截,在Action执行之后又加入某些操作. 实现原理 当请求一个Action时,struts2会查找配置文件,并根据这个Action的配置实例化对应的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器. 拦截器的执行流程 1.对Action进行预处理.(正序执行) 2.拦截器自身决定该不该执行后续的拦截器(由invoke()方法的返回值决定).