spring 拦截器 1.firstIntercept 2.secondIntercept 配置文件 我默认用注解 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!--value属性的值是你存放国际化信息的文件名的前缀,basename 表是单数 --> <property name="basename" value="messages"></property> <!-- <property name="basenames"> <list> <value>messages</value> </list> </property> --> <property name="useCodeAsDefaultMessage" value="true" /> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="defaultLocale" value="en" /><!---->默认国际化语言是英文 </bean> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang" /> <!-- lang=ja_JP_ //日文 lang=zh //中文 lang=en //英文 --> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> </bean> <bean id="firstIntercept" class="cn.easier.interceptor.FirstIntercept"/> <bean id="secondIntercept" class="cn.easier.interceptor.SecondIntercept"></bean> <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> <!--国际化拦截器--> <ref bean="firstIntercept"/> <ref bean="SecondIntercept"/> </list> </property> </bean> 运行顺序 1、两个都返回true 如果(firstIntercept)第一个拦截器中的preHandler方法返回true 就(SecodeIntecept)执行下一个拦截器的preHandler方法也返回true,再以此类推.. firstIntercept...preHandler SecodeIntecept...preHandler save //这是control里面去了,表示上面两个拦截器都返回true了 SecodeIntecept...postHandle firstIntercept...postHandle SecodeIntecept...afterCompletion firstIntercept...afterCompletion 2、第一个都返回false firstIntercept...preHandler //进入第一个拦截器的preHandler里面,就停止执行了,后面的拦截器都不会执行了 3、第二个都返回false firstIntercept...preHandler //进入第一个拦截器的preHandler里面,因为第一个拦截器返回true,进入第二个拦截器preHandler里面去了 SecodeIntecept...preHandler //进入第二个拦截器preHandler里,但是他返回false,所以停留在第二个拦截器里面了, firstIntercept...afterCompletion //但是他会执行第一个(firstIntercept)拦截器的afterCompletion方法 4.thirdIntercept //第三个thirdIntercept 的preHandler方法为true时 firstIntercept...preHandler SecodeIntecept...preHandler thirdIntercept...preHandler save //这是control里面去了,表示上面两个拦截器都返回true了 SecodeIntecept...postHandle firstIntercept...postHandle thirdIntercept...postHandle SecodeIntecept...afterCompletion firstIntercept...afterCompletion thirdIntercept...afterCompletion //假如还有第三个 5.thirdIntercept //第三个thirdIntercept 的preHandler方法为false时 firstIntercept...preHandler //true SecodeIntecept...preHandler //true thirdIntercept...preHandler //false 但是他会执行前一个拦截器的afterCompletion方法 SecodeIntecept...afterCompletion //但是他会执行他前一个的前一个拦截器的afterCompletion方法 firstIntercept...afterCompletion
//没画图,那天画个图说说更详细 这也有个例子http://www.blogjava.net/wmcoo/articles/333752.html
本文介绍了 Spring MVC 中的拦截器配置及运行流程。通过示例展示了如何使用注解配置多个拦截器,并解释了不同情况下拦截器的执行顺序。
90

被折叠的 条评论
为什么被折叠?



