欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > springMVC中的拦截器

springMVC中的拦截器

2024/10/25 15:30:39 来源:https://blog.csdn.net/NiNg_1_234/article/details/140069607  浏览:    关键词:springMVC中的拦截器

文章目录

    • 11、拦截器
      • 11.1书写拦截器的步骤
        • 一、首先需要在SpringMVC.xml中配置拦截器
        • 二、处理完配置文件进行配置类的书写书写的类需要实现HandlerInterceptor接口
      • 11.2多个拦截器的执行顺序
        • ⑴如果每个拦截器的preHandle()都返回true
        • ⑵如果某个拦截器的preHandle()返回了false
        • ⑵如果某个拦截器的preHandle()返回了false

11、拦截器

11.1书写拦截器的步骤

一、首先需要在SpringMVC.xml中配置拦截器
<!--        配置拦截器-->
<mvc:interceptors><!--        直接配置拦截器--><!--        <bean class="com.qc.interceptor.FirstInterceptor"></bean>--><!--        <ref bean="firstInterceptor"/>--><!--        配置精确的拦截器--><mvc:interceptor><!--            配置拦截器的路径--><mvc:mapping path="/**"/><!--            配置需要排除的路径--><mvc:exclude-mapping path="/test/abc"/><mvc:exclude-mapping path="/"/><ref bean="firstInterceptor"></ref></mvc:interceptor><!--精确配置拦截器二--><mvc:interceptor><mvc:mapping path="/**"/><mvc:exclude-mapping path="/test/abc"/><mvc:exclude-mapping path="/"/><ref bean="secondInterceptor"/></mvc:interceptor>
</mvc:interceptors>

上面的代码中提到了两种方法配置拦截器(直接配置,精确配置),更推荐使用精确配置

二、处理完配置文件进行配置类的书写书写的类需要实现HandlerInterceptor接口

SpringMVC的拦截器有三个抽象方法

  1. preHandle:控制器方法执行之前执行preHandle(),其boolean类型的返回值表示拦截或放行,返回true为放行,即可以调用控制方法;返回false表示拦截,即不可以调用控制器方法。

  2. postHandle:控制器方法执行之后执行postHandle()

  3. afterCompletion:处理万视图和模型数据,渲染视图完毕之后执行

@Component
public class FirstInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("FirstInterceptor...preHandle");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("FirstInterceptor...postHandle");HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("FirstInterceptor...afterCompletion");HandlerInterceptor.super.afterCompletion(request, response, handler, ex);}
}

11.2多个拦截器的执行顺序

⑴如果每个拦截器的preHandle()都返回true

此时多个拦截器的执行顺序和拦截器在SpringMVC配置文件中的配置顺序有关:

preHandle()会按照配置的顺序执行,而其它两个postHandle和afterCompletion会按照配置的逆序执行

⑵如果某个拦截器的preHandle()返回了false

而其它两个postHandle和afterCompletion会按照配置的逆序执行

⑵如果某个拦截器的preHandle()返回了false

preHandle()返回false和它之前的拦截器的preHanlde()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterCompletion会执行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com