定义一个拦截器
实现HandlerInterceptor接口,其中包含3个方法
// 进入Handler方法前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// return false表示拦截,不向下执行;return true表示不拦截,向下执行
return false;
}
//进入Handler方法之后,返回modelandview之前执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
// 执行Handler完成后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
拦截器的配置
springmvc的拦截器是针对某个HandlerMapping进行拦截,如果在某个HandlerMapping中配置拦截,则经过该HandlerMapping映射成功的Handler会使用该拦截器。
springmvc的拦截器也可配置类似全局的拦截器,即将配置的拦截器注入到每个HandlerMapping中
<mvc:interceptors>
<!-- 如有多个拦截器,会顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.anjuke.skytorif.interceptor.MyInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>