Spring MVC Interceptor
Posted 阳君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC Interceptor相关的知识,希望对你有一定的参考价值。
Spring MVC 中的拦截器类似于 Servlet 中的过滤器,它主要用于拦截用户请求并做相应的处理。
拦截器只需要在xml中如下配置即可。
<mvc:interceptors>
<bean class="com.CustomInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/secure/**"/>
<bean class="com.Interceptor1"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/secure/*"/>
<bean class="com.Interceptor2"/>
</mvc:interceptor>
</mvc:interceptors>
按顺序拦截,会经过 CustomInterceptor、Interceptor1 和 Interceptor2。
拦截器主要实现 HandlerInterceptor 接口,接口定义如下
package org.springframework.web.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.lang.Nullable;
import org.springframework.web.method.HandlerMethod;
public interface HandlerInterceptor
// 控制器方法前执行,其返回值表示是否中断后续操作
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception
return true;
// 控制器方法调用之后,解析视图之前执行
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable
ModelAndView modelAndView) throws Exception
// 整个请求完成,视图渲染结束之后执行
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception
多个拦截器,如 Interceptor1 和 Interceptor2,它们的核心方法执行顺序如下。
Interceptor1 preHandle
Interceptor2 preHandle
HandlerAdapter handle
Interceptor2 postHandle
Interceptor1 postHandle
DispatcherServlet render
Interceptor2 afterCompletion
Interceptor1 afterCompletion
Appendix
Sample Code
Related Documentation
Revision History
时间 | 描述 |
---|---|
2017-10-19 | 博文完成 |
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974
以上是关于Spring MVC Interceptor的主要内容,如果未能解决你的问题,请参考以下文章
spring security 默认拦截和 springmvc 的Interceptor 拦截冲突的问题