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

过滤器(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>标签进行配置,并指定监听器类的全限定名
  • 69
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值