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

过滤器(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>标签进行配置,并指定监听器类的全限定名
相关推荐
我要洋人死12 分钟前
导航栏及下拉菜单的实现
前端·css·css3
科技探秘人24 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人25 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR30 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香32 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q24985969335 分钟前
前端预览word、excel、ppt
前端·word·excel
小华同学ai40 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
Gavin_9151 小时前
【JavaScript】模块化开发
前端·javascript·vue.js
懒大王爱吃狼2 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
逐·風6 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#