ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SpringMVC-拦截器

2026/9/21 8:00:31 拓冰建站 浏览量
SpringMVC-拦截器

文章目录

  • 拦截器
    • 一、SpringMVC配置文件
    • 二、三个抽象方法
    • 三、多个拦截器的执行顺序

拦截器

一、SpringMVC配置文件

<!--    配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/>   <!---拦截的路径--><mvc:exclude-mapping path="/"/>   <!----不拦截的路径--><bean class="com.mvc.intercepter.FirstIntercepter"></bean>  <!---拦截器--></mvc:interceptor></mvc:interceptors>
public class FirstIntercepter implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}}

二、三个抽象方法

SpringMVC中的拦截器有三个抽象方法:
preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示是否拦截或放行,
返回true为放行,即调用控制器方法;
返回false表示拦截,即不调用控制器方法
postHandle:控制器方法执行之后执行postHandle()
afterComplation:处理完视图和模型数据,渲染视图完毕之后执行afterComplation()

三、多个拦截器的执行顺序

若每个拦截器的preHandle()都返回true
此时多个拦截器的执行顺序和拦截器在SpringMVC的配置文件的配置顺序有关:
preHandle()会按照配置的顺序执行,而postHandle()和afterComplation()会按照配置的反序执行

若某个拦截器的preHandle()返回了false
preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle() 都不执行,返回false的拦截器之前的拦截器的afterComplation()会执行