021_SpringMVC中拦截器的作用?

拦截器主要就是为了拦截使用controller直接访问web-inf目录下的动态资源文件。

因为这样很可能造成我们页面加载不完全,例如用户名没有显示。

intercept执行时机:处理器映射根据用户提,交的请求映射出了所要执行处理器类,并且也找到了要执行该处理器类的适配, 在处理器适配执行之前。

拦截器我们是可以自定义的,但是他要继承HanderIntercept接口。
拦截器有三个方法,preHandler()、postHandler()、afterComplaint()
preHandler()只要返回的是true,afterComplaint()就一定要执行。
afterComplaint()放在栈中,先进后出。
只有preHandeler返回的是true,后面的处理器才能调用。

单个拦截器示意图:

多个拦截器示意图

 1  <mvc:interceptors>
 2         <mvc:interceptor>
 3             <!--拦截的请求URL-->
 4             <mvc:mapping path="/settings/**"/>
 5             <mvc:mapping path="/workbench/**"/>
 6             <!--指定不拦截的请求URL,优先级高-->
 7             <mvc:exclude-mapping path="/settings/qx/user/toLogin.do"/>
 8             <mvc:exclude-mapping path="/settings/qx/user/login.do"/>
 9        <!--指定拦截器的bean,这样被拦截的请求就会跳转的--> 
10             <bean class="com.bjpowernode.crm.settings.web.interceptor.LoginInterceptor"/>
11         </mvc:interceptor>
12     </mvc:interceptors>
原文地址:https://www.cnblogs.com/pogusanqian/p/12465832.html