伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

springboot|springboot配置拦截器

来源:本站原创 浏览:105次 时间:2022-10-06
springboot配置拦截器

在springboot中配置拦截器大体上分为以下几步
1.引入相关的依赖
2.新建拦截器
3.配置拦截器Bean
虽然网上有很多配置方法,但是我更倾向于官方文件的配置方法,在以后的DEMO中也会是尽量和官方文档进行贴合
参考文档:https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/web.html#mvc-config-interceptors

引入依赖

只需要引一个web的依赖就可以了

implementation 'org.springframework.boot:spring-boot-starter-web'
新建拦截器

如果不知道如何新建,可以参考Spring源码中的LocaleChangeInterceptor

/** * 测试拦截器,继承的类参考 Spring源码中LocaleChangeInterceptor * 和ThemeChangeInterceptor写法 * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/public class TestInterceptor extends HandlerInterceptorAdapter {    /**     * 这个方法在HandlerMapping找到对应的处理对象,但还没有请求这个对象时处理     * 也就是在Controller的方法之前执行     *     * @param request     * @param response     * @param handler  这个参数就是代码着Controller的方法     */    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        System.out.println("run in pre Handle");        return true;    }    /**     * 在Handler/controller的方法处理完逻辑,渲染视图之前执行     *     * @param request     * @param response     * @param handler     * @param modelAndView     */    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        System.out.println("run in post Handle");    }    /**     * 在视图渲染完之后执行,常用于资源清理等等     *     * @param request     * @param response     * @param handler     * @param ex     */    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {        super.afterCompletion(request, response, handler, ex);    }}

配置拦截器Bean
不知道如何配置的同学可以参考上述给出的spring官方文档

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/@Configuration@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer {    /**     * 在这里添加自己定义的拦截器     * @param registry     */    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new TestInterceptor())                // 只拦截test路径        .addPathPatterns("/test/**")                // 不拦截pass路径        .excludePathPatterns("/pass/**");    }}
编写测试的controller

这块就写的很随意了

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/8 **/@RestControllerpublic class TestController {    @RequestMapping("test/testInterceptor")    public String testInterceptor(){        System.out.println("in test method");        return "";    }    @RequestMapping("pass/testPass")    public String testPass(){        System.out.println("in pass method");        return "";    }}
结果输出

走拦截器的情况

不走拦截器的情况

DEMO总评

拦截器是Web中的一大核心概念,我们常常拿拦截器与过滤器进行比较,通过代码可简单总结,拦截器是基于springMVC的,拦截器是只对Controller方法做修改.等等还有很多特性小伙伴们可以自行总结下,常见用法,如文档中所示,可用于本地化,可用于安全验证等等

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net