SpringMVC也可以使用拦截器对请求进行拦截,用户可以自定义拦截器来实现特定功能,自定义的拦截器必须实现HandlerInterceptor接口:
该接口要重写的三个方法:
-preHandler():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求request进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或是业务处理器去进行处理,则返回true,如果程序员决定不需要在调用其他的组件处理请求,则返回false;
- postHandle():这个方法在业务处理器处理完请求后,但是DispatcherServlet向客户端返回响应前被调用,在该方法中对用户请求request进行处理。
-afterCompletion():这个方法在DisPatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
拦截器执行顺序:
配置拦截器:在spring-mvc.xml中配置:
<mvc:interceptors>
<!-- 配置自定义的拦截器 -->
<bean class="com.atguigu.springmvc.interceptors.FirstInterceptor"></bean>
<!-- 配置拦截器(不)作用的路径 -->
<mvc:interceptor>
<mvc:mapping path="/emps"/>
<bean class="com.atguigu.springmvc.interceptors.SecondInterceptor"></bean>
</mvc:interceptor>
<!-- 配置 LocaleChanceInterceptor -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>