赞
踩
目录
过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出过滤操作。
使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。
一个应用中可以定义多个拦截器,spring在项目启动时,会将这些拦截器注册进来,并按照默认规则进行排序。如果是自定义的拦截器,可手动设置拦截器调用的先后顺序。
各拦截器是链式调用,一个请求可以触发多个拦截器,每个拦截器的调用会按照它加载到spring中的顺序依次执行。
拦截器中有3个方法,功能如下:
AOP操作可以对操作进行横向的拦截,最大的优势在于他可以获取执行方法的参数,对方法进行统一的处理。常见使用日志,事务,请求参数安全验证等,可以使用@Aspect标记为切面类,使用@Pointcut和@Around、@Before、@After、@AfterReturning、@AfterThrowing来确定拦截位置
区别 | 过滤器Filter | 拦截器Interceptor |
实现原理 | 函数回调 | Java反射机制 |
适用范围 | servlet的规范,只能用于web程序 | spring框架支持, 既可以应用在web程序中,也可以应用在非web程序中 |
粒度 | Filter只能在servlet的前后起作用 | 拦截器能在方法前后异常前后执行,更加灵活,粒度更小,spring框架程序优先使用拦截器 |
初始化时机 | 随着Tomcat等web容器启动时而进行初始化 | 随着spring启动而进行初始化 |
使的场景 | 实现通用功能过滤(敏感词过滤、字符集编码设置、响应数据压缩等功能) | 实现项目中的业务判断(登录判断、权限判断、日志记录等) |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。