使用拦截器对请求进行拦截处理
handle()方法执行前执行applyPreHandle(),常用于实现权限
handle()方法执行后执行applyPostHandle(),常用于对请求域中的属性或视图(modelAndView)做出修改
render()方法执行后(响应后)执行AfterCompletion(),常用于释放资源
1、doService拦截请求
2、doDispatch()
3、applyPreHandle()
4、handle()
5、applyPostHandle()
6、processDispatchResult()
7、processDispatchResult()中执行render()后执行triggerAfterCompletion()
8、render()里有resolveViewName()、render()。resolveViewName()用于得到view对象,其中有viewResolver.resolveViewName(),之中还有createView(),作用就是响应客户端:转发、重定向;view.render()用于真正渲染视图,里边是renderMergedOutputModel()合并结果和模型
配置拦截器
是拦截所有请求
<mvc:interceptors>
<bean class="com.jd.interceptor.Interceptor"></bean>
</mvc:interceptors>
还是指定请求
<mvc:interceptors>
<mvc:interceptor>
<!--
mvc:exclude-mapping用于设置不拦截哪些路径的请求;mvc:mapping用于设置拦截哪些路径的请求,如下例子:
/userinfo只拦截/userinfo请求,不拦截/userinfo/toView.do请求
/userinfo/*拦截/userinfo/xxx请求
-->
<mvc:mapping path="/userinfo/*"/>
<bean class="com.jd.interceptor.Interceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>