SpringMVC 自定义拦截器
自定义拦截器
Spring MVC 可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现 HandlerInterceptor
接口。
该接口有以下 3 个方法:
(1)preHandle():
这个方法在业务处理器处理请求之前被调用,在该
方法中对用户请求 request
进行处理。如果程序员决定该拦截器对
请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去
进行处理,则返回 true
;如果程序员决定不需要再调用其他的组件
去处理请求,则返回false
。
即:继续走下去,返回 true。如果我们要程序被拦截(例如没有登录访问某个页面),要返回 false。
(2)postHandle():
这个方法在业务处理器处理完请求后,但是 DispatcherServlet
向客户端返回响应前被调用,在该方法中对用户请求 request
进行处理。
即返回视图之前被调用。
(3)afterCompletion():
这个方法在 DispatcherServlet
完全处理完请
求后被调用,可以在该方法中进行一些资源清理的操作。
配置自定义拦截器
我们可以排除一些 url 不被拦截:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/users/login"/>
<bean class="com.english17.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
注意观察下图中拦截器被执行的顺序: