首页 > 其他分享 >过滤器和拦截器以及监听器

过滤器和拦截器以及监听器

时间:2024-07-15 23:54:59浏览次数:18  
标签:Web 拦截器 请求 配置 监听器 过滤器 监听

过滤器(Filter)

1 过滤器是Web应用中的一个组件,它能够对客户端和服务器之间的请求(Request)和响应(Response)进行拦截和处理

2过滤器基于函数回调机制,依赖于Servlet容器

3过滤器可以对几乎所有的请求起作用,可以在请求到达Servlet之前或响应发送给客户端之后对请求和响应进行加工处理

应用场景

  • 字符编码转换:确保客户端和服务器之间传输的数据编码一致。
  • 日志记录:记录请求和响应的详细信息,便于问题追踪和性能分析。
  • 权限控制:根据用户权限决定是否允许访问某些资源

配置方式 

在web.xml文件中通过<filter><filter-mapping>标签进行配置

拦截器(Interceptor)

拦截器则主要用于拦截方法调用、消息传递或请求处理等,以便在目标方法执行之前或之后执行某些预处理或后处理工作。在Java EE或Spring框架中,拦截器常用于实现横切关注点,如日志记录、事务管理、安全检查等。

拦截器通常是通过实现特定的拦截器接口,并配置到框架的拦截器链中来实现的。当请求到达时,框架会根据配置依次调用拦截器链中的拦截器,最后调用目标方法。在目标方法执行前后,拦截器可以执行自定义的逻辑

  • 拦截器是基于Java的反射机制实现的,不依赖于Servlet容器。
  • 拦截器只能对action请求起作用,即它主要工作在MVC框架的Controller层。
  • 拦截器可以访问action上下文、值栈里的对象,因此可以进行更细粒度的操作。
  • 在action的生命周期中,拦截器可以多次被调用

应用场景

  • 登录检查:在用户访问需要登录的页面时,检查用户是否已经登录。
  • 权限验证:根据用户的角色和权限,决定用户是否可以访问某个资源。
  • 数据处理:在请求处理前后对数据进行加工处理,如参数校验、响应数据格式化等。

配置方式

  • 在Spring MVC中,拦截器通常配置在Spring配置文件中,而不是web.xml中。
  • 通过实现HandlerInterceptor接口并定义preHandlepostHandleafterCompletion等方法来实现拦截逻辑

监听器(Listener)

监听器主要用于监听某种事件的发生,并在事件发生时执行相应的处理逻辑。在Java EE或Spring框架中,监听器常用于监听应用程序的生命周期事件、HTTP请求/响应事件、会话(Session)事件等。例如,在Web开发中,可以使用监听器来监听ServletContext的创建和销毁、HTTP会话的创建和销毁、请求属性的变化等。

监听器通常是通过实现特定的事件监听接口,并将其实例注册到相应的容器或管理器中来实现的。当特定事件发生时,容器或管理器会自动调用监听器的相应方法来处理该事件

  • 监听器是专门用于监听Web应用中某些事件或状态改变的对象。
  • 当被监听的对象(如ServletContext、HttpSession、ServletRequest等)发生变化时,监听器会收到通知并执行相应的处理逻辑。
  • 监听器在Web应用启动时跟随启动,停止时跟随销毁,但只初始化一次 

应用场景

  • 加载初始化信息:如数据库连接池的配置、系统参数的加载等。
  • 统计在线人数:通过监听Session的创建和销毁来统计当前在线的用户数。
  • 监听Web应用的启动和关闭:在Web应用启动和关闭时执行特定的初始化或清理操作。

配置方式 

  • 在web.xml文件中通过<listener>标签进行配置,并指定监听器类的全限定名

标签:Web,拦截器,请求,配置,监听器,过滤器,监听
From: https://blog.csdn.net/m0_63227888/article/details/140451437

相关文章

  • Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
    1.SpringMVC中的拦截器的使用“拦截器基本配置”和“拦截器高级配置”@目录1.SpringMVC中的拦截器的使用“拦截器基本配置”和“拦截器高级配置”2.拦截器3.SpringMVC中的拦截器的创建和基本配置3.1定义拦截3.2拦截器基本配置3.3拦截器的高级配置4.SpringMVC......
  • 自定义拦截器
    第一步:创建的first类去实现 HandlerInterceptor  按需重写里面的  preHandle(预处理)、postHandle(执行前也叫前置拦截器)、afterCompletion(渲染之后执行任务之前)方法第二步:创建好first类不代表拦截器生效了要去写个配置类去配置它。创建second类去实现WebM......
  • Linux中使用Docker安装Redis容器以及布隆过滤器
    前言在项目中,一般普遍都会用到Redis,在准备学习Redis的相关的东西时,其中提到了缓存穿透、缓存击穿、缓存雪崩的问题。其中对于缓存穿透的一个解决方案中就有提到布隆过滤器,而布隆过滤器的也有许多提供方式(Guava、Redisson、RedisBloom),前面都是基于本地的,所以就选择了Redis官方......
  • abp框架必须移除的过滤器
    AbpExceptionFilter这个是abp默认异常处理过滤器,当我们需要统一返回结构时,需要移除AbpAutoValidateAntiforgeryTokenAttribute这个是abp身份验证过滤,当我们需要自定义jwt时需要移除移除代码示例:Configure<MvcOptions>(options=>{List<int>indexes=[];in......
  • gRPC 高级——Interceptor 拦截器
    gRPC拦截器是一种用于在RPC方法调用的生命周期中拦截和处理请求和响应的机制。拦截器允许开发者在请求到达实际服务方法之前或在响应返回客户端之前执行自定义逻辑。它们类似于中间件,广泛应用于日志记录、身份验证、请求修改等场景。拦截器的种类客户端拦截器(ClientInter......
  • Qt-事件过滤器、事件分发器、事件处理器
    前言Qt中事件的处理步骤1.当事件产生之后,Qt应用程序对象通过调用QApplication::notify()函数将事件发送到指定的窗口。2.事件在发送过程中可以通过向对象(窗口、按钮等)安装事件过滤器QObject::eventFilter()来对事件进行过滤。Qt应用程序默认不对任何产生的事件......
  • Interceptor 拦截器
    1、拦截器的介绍拦截器使用场景:登录验证:对于需要登录才能访问的网址,使用拦截器可以判断用户是否已登录,如果未登录则跳转到登录页面。权限校验:根据用户权限对部分网址进行访问控制,拒绝未经授权的用户访问。请求日志:记录请求信息,例如请求地址、请求参数、请求时间等,用于排查......
  • 布谷鸟过滤器解析
    在我的记忆中布谷鸟过滤器一直是说比bloom好,那么我博客便以一个diss布谷鸟过滤器的角度来探究学前须知:本篇立足于读者了解bloomfilter底层实现上布谷鸟相较于bloom的优点支持删除操作如何支持呢?因为bloom的话是不能支持的,他的一个bit可能代表了多个key存在的情况,所以......
  • MyBatis拦截器在实际项目中的应用
    MyBatis 是一个流行的Java持久层框架,它简化了数据库访问的复杂性,为开发者提供了强大的功能。其中,MyBatis拦截器是一个非常有用的特性,可以帮助开发者灵活地解决各种问题。一、MyBatis拦截器1.1从执行SQL语句的核心流程说起在MyBatis中,要执行一条SQL语句,会涉及......
  • 讲解一下Axios源码中,拦截器是怎么实现的
    面试中我们经常会被问道Axios的原理是怎么样的,它的拦截器是怎么实现的?下面我们来简单讲一下Axios的拦截器是如何实现的。Axios的拦截器实现基于Axios的核心原理,即Axios实例是一个包含请求和响应拦截器堆栈的对象。当发出请求或接收响应时,Axios会遍历这些拦截器,并按照添加......