过滤非法请求(未登录),过滤非法字符
通俗理解:选择符合要求
面向切面(AOP,Aspect Oriented Program),在方法执行前、执行后,或者抛出异常时调用
动态代理是拦截器的简单实现
通俗理解:干预方法执行
1、拦截器是基于反射,过滤器基于函数回调
2、拦截器不依赖servlet容器,过滤器依赖servlet容器
3、拦截器只对action请求起作用,过滤器对几乎所有请求起作用
4、拦截器可以访问action上下文、值、栈里面的对象,而过滤器不可以
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只在容器初始化时被调用一次
6、拦截器可以获取IOC容器中的各个bean,过滤器不行,在拦截器里注入一个service,可以调用业务逻辑
请求开始:请求进入容器之后,进入servlet之前
请求返回:在servlet处理完成,返回给前端之前
过滤器包裹servlet,servlet包裹拦截器
Tomcat容器 > Filter > Servlet > Inteceptor > Controller
类似servlet开发中的过滤器
1、日志记录
2、权限检查
3、性能监控,记录方法执行时间
4、通用行为,读取cookie放入请求,提取Locale、Theme
5、OpenSessionInView,如Hibernate,进入处理器之前打开session,完成后关闭session
1、Filter Pre,执行chain.doFilter(request、response)之前的逻辑
2、Service,SpringMVC的doService()即Servlet的service()
3、Dispatcher,SpringMVC的请求分发方法
4、PreHandle,执行controller之前
5、Controller
6、PostHandle,执行controller之后,return ModelAndView之前,设置ModelAndView
7、AfterCompletion,controller的return之后,Filter返回客户端之前
8、FilterAfter,服务器端逻辑全部执行完成之后,执行返回客户端之前的逻辑
Copyright ©2010-2022 比特日记 All Rights Reserved.