【Java】过滤器/拦截器

文章目录

在实际开发中,过滤器和拦截器都是经常使用的技术,但一被提及到其区别时,整个人就愣住了,好像没有认真地对两者进行区别和总结,这两者之间也确实很容易混淆,因此结合了很多开源的博客和资料对这两者进行总结,进行精简!

两者区别

过滤器(Filter) 拦截器(Interceptor)
作用域 Servlet(JavaEE) IOC(Spring)
目的 拦截URL(处理request信息) 拦截接口实现类(处理具体方法)
应用场景 1、URL级别的权限访问控制 2、过滤敏感词汇(防止sql注入) 3、设置字符编码 1、登录验证(判断登录状态)2、权限验证(校验token权限)3、日志记录(记录操作日志、访问量)4、处理cookie、本地化、国际化、主题等 5、性能监控,监控请求处理时长等
实现原理 函数回调 Java反射(动态代理)
级别 系统级 非系统级

request链路全过程

  1. Web容器:常用的有tomcat、Jetty、nginx等,不过多赘述
  2. 过滤器(Filter) :可以拿到原始的http请求,对该请求进行处理,但是拿不到你请求的控制器和请求控制器中的方法的信息。
  3. 拦截器(Interceptor):可以拿到你请求的控制器和方法,对该控制器和方法进行处理,却拿不到请求方法的参数。
  4. 切片(Aspect): 可以拿到方法的参数,但是却拿不到http请求和响应的对象
相关推荐
keyborad pianist4 分钟前
Web开发 Day1
开发语言·前端·css·vue.js·前端框架
坚持就完事了5 分钟前
Python的类型注解
开发语言·python
wjs202414 分钟前
HTML URL 编码
开发语言
wjs202420 分钟前
Lua 循环
开发语言
Evand J29 分钟前
matlab GUI制作界面的一些笔记(入门)
开发语言·笔记·matlab
我是大猴子29 分钟前
Java面经
java·开发语言
Never_Satisfied38 分钟前
在c#中,如何删除字符串中的第x个字符
开发语言·c#
_nirvana_w_39 分钟前
Qt项目链接库时遇到的坑:-l选项的正确用法
开发语言·c++·qt·qt框架·elawidgettools
froginwe1142 分钟前
数据访问对象模式(Data Access Object Pattern)
开发语言
我命由我1234543 分钟前
Visual Studio - Visual Studio 修改项目的字符集
c语言·开发语言·c++·ide·学习·visualstudio·visual studio