拦截器主要就是为了拦截使用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>