JavaWeb 中过滤器和拦截器

过滤器 Filter

  将传入的 request、response 提前过滤掉一些信息,或者提前设置一些参数,然后再传入 servlet 进行业务逻辑,比如:过滤掉非法 url (不是合格的指定的请求地址 / 用户没有登录),或者在传入 servlet 前统一设置一些信息,或者去除掉一些非法字符,比如设置字符集。

拦截器 Interceptor

  在面向切面编程过程中,比如在 service 中或其他类中的某个方法的调用执行前后,如:之前可调用一个方法动作,或者之后也可调用一个方法动作,动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其他业务逻辑的操作),也可以在调用方法之后打印出字符串,甚至在抛出异常的时候做业务逻辑的操作

拦截器和过滤器的区别

拦截器 过滤器
基于 Java 反射机制 基于函数回调
不依赖于servlet容器 依赖于servlet容器
只能对动态请求(如servlet、.do)起作用 可以对几乎所有的请求起作用
能访问动态请求上下文、值栈里的对象 不能访问
在action的声明周期中,拦截器可以多次被调用 只能在容器初始化时被调用一次

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/114013872