springMVC中对拦截器有良好的支持。一般可通过两种方式,其一实现Spring 的HandlerInterceptor 接口或继承该接口的实现类;其二实现Spring的WebRequestInterceptor接口货继承该接口的实现类。
拦截器的用途是非常广的,它主要的作用是拦截用户请求,处理数据,判定请求是否合理,决定是否放行。通常把拦截器用来验证权限、判断用登陆状态等。
今天小博老师先给大家介绍SpringMVC中第一种拦截器的实现方式。我们先来看一下HandlerInterceptor接口的源码结构:
HandlerInterceptor 接口中定义了三个方法:
1.preHandle 方法。该方法会在请求处理之前进行调用。返回值是布尔值Boolean 类型的,当返回false时请求结束,后续拦截器 和Controller 都不会被执行;当返回true 时继续调用下个拦截器 的preHandle 方法,如果已经是最后一个拦截器,则调用当前请求的Controller 方法。
2.postHandle 方法。该方法在请求处理之后,即Controller 方法调用之后执行。但是将会DispatcherServlet 进行视图渲染之前被调用,因此可以对Controller 处理之后的ModelAndView 对象进行操作,以便于在视图渲染时使用。
3.afterCompletion方法。该方法在整个请求结束之后,即DispatcherServlet 渲染对应的视图之后才被执行。这个方法的主要作用是进行对象清理、资源释放。
拦截器在spring中的配置方式如下: