spring拦截器与filter的区别

来源:互联网 发布:linux服务器维护教程 编辑:程序博客网 时间:2024/06/05 06:57

拦截器:

面向对象切面编程的,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现。

过滤器:

是在JavaWeb中,你传入的request,response提前过滤掉一些信息或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法的url,或者在传入servlet或者struts的action前统一设置字符集,或者去除一些非法字符。


1.filter

该过滤器的反复是创建一个雷的xxxFilter实现此接口,并在该雷中的doFilter方法中声明过滤规则,然后在配置文件web.xml中声明他所过滤的路径。


2.interceptor拦截器

它也要实现HandlerInterceptor接口,这里只介绍方法注解配置。


两者的本质区别:拦截器是基于Java的反射机制的,而过滤器是基于函数回调的。从灵活性上来说,拦截器功能更加强大些,Filter能做的事情,拦截器都能做,而且可以在请求前请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情,过滤掉没有用的参数,安全校验。


拦截器的应用场景

1..日志记录,记录请求信息的日志

2..权限检查

3.性能监控

4.通用行为

5.本质AOP(面向切面编程),也就是说符合切面关注点的所有功能,都可以放入拦截器实现。


原创粉丝点击