过滤器、监听器、拦截器知识点汇总

过滤器

什么是过滤器

这里讨论的是SpringMVC框架中使用的过滤器,是一个服务器端的组件,通过在web.xml中配置过滤器,截取用户端的请求和响应信息,完成对用户端请求内容的过滤。比如,一名未登录的用户想要访问登录后的信息页面,通过过滤器,可以过滤该请求,使返回登录页面。
生命周期:init(FilterConfig config)-》doFilter(HttpServletRequest r,HttpServletResponse r2,FilterChain fc)-》destroy()。
通过源码可以看出,在启动web容器的时候,会加载拦截器,生成FilterConfig ,通过使用config可以获取web.xml中配置的properties:
在这里插入图片描述
过滤器类型有:request、include、forward、error。(过滤什么类型的请求,默认是request)
只有符合目标url地址的才会触发过滤器:
在这里插入图片描述
过滤器链执行过程:根据web.xml中的生命顺序
在这里插入图片描述

怎么使用过滤器

以Spring自带的编码过滤器为例,只需要在web.xml中配置过滤器:
在这里插入图片描述
通过配置filter标签来设置过滤器的名称和类等信息,async-support表示支持多线程编程。我们来到该实现类中查看源码如下:
在这里插入图片描述
通过继承Filter类实现了doFilterInternal()方法:
在这里插入图片描述
在方法内完成对response内容的编码修改。
使用注解的方式注册过滤器:https://www.cnblogs.com/xdp-gacl/p/4224837.html

拦截器

什么是拦截器

拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强的组件。
使用场景:解决一些共性问题(乱码问题、权限认证问题)。

怎么使用拦截器

在SpringMVC中配置:
在这里插入图片描述
通过增加<mvc:mapping path="/*" />标签来配置拦截目标url
编写拦截器实现HandlerInterceptor接口:
在这里插入图片描述
使用注解的方式实现拦截:https://www.cnblogs.com/meitian/p/9078994.html

拦截器和过滤器的区别

拦截器是通过框架,运用反射技术来拦截请求,而过滤器是通过servlet容器拦截全部的请求:
https://www.cnblogs.com/panxuejun/p/7715917.html

监听器

什么是监听器

是指对于其他对象发生事件或者状态改变进行监听并处理的对象。例如:统计在线用户数量。
监听器的分类:
在这里插入图片描述
监听器的启动顺序:
在这里插入图片描述

怎么使用监听器

首先在web.xml中生命监听器(以log4j为例):
在这里插入图片描述
进入源码中可以看到主要重写了两个方法:
在这里插入图片描述
当web容器启动的时候,加载监听器,获得ServletContextEvent的实例,根据监听器类别的不同,可以从event中获取监听对象(attribute等等)。
使用注解的方式注册监听器:https://www.cnblogs.com/xdp-gacl/p/4226851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值