本篇文章给大家带来的内容是关于spring中filter和interceptor有什么区别?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
interceptor
主要作用:拦截用户请求,进行处理,比如判断用户登录情况、权限验证,只要针对controller请求进行处理,是通过handlerinterceptor。
interceptor分两种情况,一种是对会话的拦截,实现spring的handlerinterceptor接口并注册到mvc的拦截队列中,其中prehandle()方法在调用handler之前进行拦截(上图步骤3),posthandle()方法在视图渲染之前调用(上图步骤5),aftercompletion()方法在返回相应之前执行;另一种是对方法的拦截,需要使用@aspect注解,在每次调用指定方法的前、后进行拦截。
filter
主要作用:过滤字符编码、做一些业务逻辑判断,主要用于对用户请求进行预处理,同时也可进行逻辑判断。
filter在请求进入servlet容器执行service()方法之前就会经过filter过滤(上图步骤1),不像intreceptor一样依赖于springmvc框架,只需要依赖于servlet。filter启动是随web应用的启动而启动,只需要初始化一次,以后都可以进行拦截。
filter有如下几个种类:
用户授权filter:检查用户请求,根据请求过滤用户非法请求;
日志filter:记录某些特殊的用户请求;
解码filter:对非标准编码的请求解码。
filter和interceptor的区别
1、filter是基于函数回调(dofilter()方法)的,而interceptor则是基于java反射的(aop思想)。
2、filter依赖于servlet容器,而interceptor不依赖于servlet容器。
3、filter对几乎所有的请求起作用,而interceptor只能对action请求起作用。
4、interceptor可以访问action的上下文,值栈里的对象,而filter不能。
5、在action的生命周期里,interceptor可以被多次调用,而filter只能在容器初始化时调用一次。
6、filter在过滤是只能对request和response进行操作,而interceptor可以对request、response、handler、modelandview、exception进行操作。
【相关推荐:java视频教程】
以上就是spring中filter和interceptor有什么区别?的详细内容。