一:拦截器的HelloWorld
1.首先自定义拦截器
只要实现接口就行。
1 package com.spring.it.interceptors;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.springframework.web.servlet.HandlerInterceptor;
7 import org.springframework.web.servlet.ModelAndView;
8
9 public class FirstInterceptor implements HandlerInterceptor{
10
11 @Override
12 public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
13 throws Exception {
14 System.out.println("afterCompletion");
15
16 }
17
18 @Override
19 public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
20 throws Exception {
21 System.out.println("postHandle");
22
23 }
24
25 @Override
26 public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
27 System.out.println("preHandle");
28 return true;
29 }
30 }
2.自定义拦截器
1 <mvc:interceptors>
2 <!-- 配置自定义拦截器 -->
3 <bean class="com.spring.it.interceptors.FirstInterceptor"></bean>
4
5 <!-- 配置LocaleChangeInterceter拦截器 -->
6 <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
7 </mvc:interceptors>
3.效果
重启,然后随便点一个链接
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SYmRDMxQWMiFzNkFTOllTOmhzMlRmYxQTO5YWY1cTOj9CX4AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
4.说明
preHandler:如果返回true,则继续调用后续的拦截器和目标方法
如果返回false,则不再进行调用后续的拦截器和目标方法
可以考虑做权限,日志,事务
postHandler:调用目标方法之后,但是在渲染视图之前
可以对请求域中的属性或者视图做出修改。
dftercompletion:渲染视图之后被调用
释放资源。
5.调用顺序
二:拦截器的配置
1.配置拦截器的作用路径
1 <mvc:interceptors>
2 <!-- 配置自定义拦截器 -->
3 <bean class="com.spring.it.interceptors.FirstInterceptor"></bean>
4 <!-- 配置拦截器的作用路径 -->
5 <mvc:interceptor>
6 <mvc:mapping path="/emps"/>
7 <bean class="com.spring.it.interceptors.SecondInterceptor"></bean>
8 </mvc:interceptor>
9
10 <!-- 配置LocaleChangeInterceter拦截器 -->
11 <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
12 </mvc:interceptors>
2.效果
三:拦截器的执行顺序
1.图说明
2.注意点
如果second中的preHandler中返回false。