拦截器的用途是很是广的,它主要的做用是拦截用户请求,处理数据,断定请求是否合理,决定是否放行。一般把拦截器用来验证权限、判断用登录状态等。spring
springMVC中对拦截器有良好的支持。通常可经过两种方式,其一实现Spring 的HandlerInterceptor 接口或继承该接口的实现类;其二实现Spring的WebRequestInterceptor接口货继承该接口的实现类。mvc
今天小博老师先给你们介绍SpringMVC中第一种拦截器的实现方式。咱们先来看一下HandlerInterceptor接口的源码结构:app
HandlerInterceptor 接口中定义了三个方法:post
1. preHandle 方法。该方法会在请求处理以前进行调用。返回值是布尔值Boolean 类型的,当返回false时请求结束,后续拦截器 和Controller 都不会被执行;当返回true 时继续调用下个拦截器 的preHandle 方法,若是已是最后一个拦截器,则调用当前请求的Controller 方法。spa
2. postHandle 方法。该方法在请求处理以后,即Controller 方法调用以后执行。可是将会DispatcherServlet 进行视图渲染以前被调用,所以能够对Controller 处理以后的ModelAndView 对象进行操做,以便于在视图渲染时使用。3d
3. afterCompletion方法。该方法在整个请求结束以后,即DispatcherServlet 渲染对应的视图以后才被执行。这个方法的主要做用是进行对象清理、资源释放。code
拦截器在spring中的配置方式以下:对象
<mvc:interceptors> blog
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截全部的请求 --> 继承
<bean class="com.bwf.interceptor.BwfInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/bwf/company"/>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
<bean class="com.bwf.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>