Filter、Interceptor、Aspect区别与应用

Filter:和框架无关,可以控制最初的http请求,但是更细一点的类和方法控制不了。

可以拦截到方法的请求和响应(ServletRequest request, ServletResponse response)
可以对请求响应进行处理,比如设置字符编码,鉴权操作等

Interceptor:可以控制请求的控制器和方法,但控制不了请求方法里的参数

可以设置为方法执行之前(preHandle)和方法执行之后(afterCompletion)
回调操作(postHandle),可以获取执行的方法的名称/请求(HttpServletRequest)等
常用于处理页面提交的请求响应并进行处理,例如做国际化,做主题更换,过滤等

Aspect : 可以自定义切入的点,能拿到方法的参数,但是拿不到http请求,可以通过其他方式如RequestContextHolder获得。

可以对操作进行横向的拦截,可以获取执行方法的参数,对方法进行统一的处理
常见使用日志,事务,请求参数安全验证等

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章