为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 SpringMVC 中的拦截器?

标签:
Java Spring 源码

  1. xml 方式

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean id="myHandlerInterceptor" class="controller.MyHandlerInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

public class MyHandlerInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("=====preHandle");
        return false;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("=====postHandle");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("=====afterCompletion");
    }
}

这是 HandlerInterceptor 会被注册成 MappedInterceptor,在 RequestMappingHandlerMapping 执行 ApplicationContextAware 的 setApplicationContext 回去加载所有的 MappedInterceptor。这样 HandlerMapping 中就有了这个自定义的 Interceptor

图片描述

  1. annotation

可以使用 @EnableWebMvc 来注册 RequestMappingHandlerMapping,在注册时会去获取 interceptor。

图片描述

此时如果我们需要加入自己的 HandlerInterceptor 的话自己先实现 WebMvcConfigurer 这个接口,实现里面的 addInterceptors 方法,同时将这个实现类注册到容器中去。自己再去实现 HandlerInterceptor,跟上面的 MyHandlerInterceptor 一样。

在 springboot 中通过 WebMvcAutoConfiguration 这个配置类来注册 RequestMappingHandlerMapping,注册时加载 HandlerInterceptor 跟上面一样

图片描述

备注:WebMvcAutoConfiguration 这个配置类是通过 springboot 自动装配加载的。(spring.factories 中的 EnableAutoConfiguration)

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

0 评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
7
粉丝
0
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消