拦截器类似于过滤器,都是用于对请求进行拦截,判断是否能继续向下执行的作用,可用于登录注册及权限检查。
注:需要实现HandlerInterceptor接口
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截的请求 -->
<!--
/*:只能拦截一层路径(/hello.do)
/**:能拦截所有路径(/demo/.../hello.do)
-->
<mvc:mapping path="/**"/>
<!-- 排除的请求 -->
<mvc:exclude-mapping path="/some"/>
<!-- 拦截器名 -->
<bean class="org.spring.teach.interceptors.SomeInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
public class SomeInterceptor implements HandlerInterceptor {
/*
* DispatcherServlet在收到请求之后,会先调用拦截器的preHandler方法。
* 如果该方法的返回值是true,则继续向后执行;
* 如果该方法的返回值是false,则中断请求,返回结果。
* handler参数:处理器方法对象
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return false;
}
/*
* 处理器(Controller)的方法执行完毕,正准备将处理结果(ModelAndView)返回给DispatcherServlet之前,
* 执行postHandler方法
* 注:
* 可以在该方法里面修改处理结果(ModelAndView)
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/*
* 整个请求处理完毕,最后执行的方法
* ex参数:处理器方法抛出的异常。
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}