web中filter、interceptor、aspect
对于filter、interceptor、aspect 有相似也有区别
filter
过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出过滤操作,过滤器依赖于servlet容器,一个过滤器实例只能在容器初始化时调用一次,在容器结束时销毁。
- filter里面是能够获取到请求的参数和响应的数据
- filter 不能获取到访问的handler(出去配置指定的handler 的过滤器);
- web应用启动的顺序是:listener->filter->servlet,所以导致filter 不能引用spring 中注入的bean;
Interceptor
过滤器可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response),并对请求响应做出过滤操作,过滤器依赖于servlet容器,一个过滤器实例只能在容器初始化时调用一次,在容器结束时销毁。
- 拦截器中可以获取到Controller对象
- 拦截器的三个方法,区别preHandle是handler前执行,postHandler,afterCompletion在方法后执行,postHandler有异常是不会执行的,afterCompletion不管是否有异常都会执行;并且在参数中有Exception ex 参数 可以捕获异常对象。
- web应用启动的顺序是:listener->filter->servlet,所以导致filter 不能引用spring 中注入的bean;
Aspect
- 常见使用日志,事务,请求参数安全验证,通过获取到的参数
- 但是取不到(ServletRequest request, ServletResponse response)。
以上是简单的描述,具体的使用可以借鉴网上的文章或者查看源码。