springboot入门到精通(十二)springboot自定义拦截器

导读:本篇文章讲解 springboot入门到精通(十二)springboot自定义拦截器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

springboot自定义拦截器

目录

1介绍
2springboot初体验
3springboot集成jsp
4springboot属性注入
5springboot集成mybatis
6springboot集成lombok
7springboot集成logback日志
8springboot开启全局热部署
9springboot面向切面编程
10springboot文件上传
11springboot文件下载
12springboot自定义拦截器
13springboot打成war包发布
14springboot打成jar包发布
15springboot自定义banner
16springboot配置文件拆分

拦截器介绍

特点

  1. 请求到达会经过拦截器,响应回来还要经过拦截器
  2. 拦截器只能拦截控制器(controller),不能拦截jsp
  3. 拦截器可以中断用户请求

作用

将控制器(controller)中共同的方法放到拦截器中执行,减少控制器的代码。

基本示例

创建一个类MyInterceptor1,继承拦截器HandlerInterceptor,这个就是我们自定义的拦截器

@Component
public class MyInterceptor1 implements HandlerInterceptor {
    //这个方法是在访问控制器(controller)之前执行的
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("*********1、这个方法在控制器之前执行******************");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("*********3、这个方法在控制器之后执行******************");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("*********4、这个方法最后执行******************");
    }
}

创建一个InterceptorConfig,实现WebMvcConfigurer,并且把我们的MyInterceptor1注册到InterceptorConfig

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    @Autowired
    private MyInterceptor1 myInterceptor1;
    
    // 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //addInterceptor 注册拦截器
        //addPathPatterns 表示拦截的控制器
        //excludePathPatterns表示排除的控制器
        registry.addInterceptor(myInterceptor1).addPathPatterns("/test/*").excludePathPatterns("/test/test1");
    }
}

启动项目后,在浏览器输入http://localhost:8088/moyundong/test/test2的时候会调用拦截器信息,输入http://localhost:8088/moyundong/test/test1
的时候不会调用拦截器
::: warning 注意

  • MyInterceptor1拦截器里面做什么就要根据具体业务了,比如验证是否登录,是否有权限等等。
  • springboot2.x以后使用WebMvcConfigurer,在之前使用WebMvcConfigurerAdapter ,配置类要继承WebMvcConfigurerAdapter ,其它用法类似。
    :::

静态资源访问

我们在resources的目录下创建statics文件夹,里面放了一些静态文件,正常情况不能正常访问,添加如下代码就可以访问了。

    // 这个方法是用来配置静态资源的,比如html,js,css,等等,解决静态资源访问问题。
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //addResourceHandler表示为前台访问的路径
        //addResourceLocations表示为files相对应的本地路径
        //我们在resources的目录下创建statics文件夹,里面放了一些静态文件,正常情况不能正常访问,添加如下代码就可以访问了。
        registry.addResourceHandler("/**").addResourceLocations("classpath:/statics/");
    }

创建好静态资源后,大家先不要加addResourceHandlers方法,直接在页面输入http://localhost:8088/moyundong/index.html或者
http://localhost:8088/moyundong/a.js的时候是不能访问静态资源的,加上上面的代码重启服务就可以访问了。

本节示例下载地址:java相关demo下载列表

::: warning 注意
在不同的平台,文档显示的效果是不一样的,最佳最全观看地址:springboot自定义拦截器
欢迎大家来博客了解更多内容:java乐园
:::

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13520.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!