《springboot实战》第五章 springboot 拦截器

简介: 《springboot实战》第五章 springboot 拦截器

1、前言

拦截器的主要作用:登录校验、权限验证、乱码解决、性能监控和异常处理等

在 Spring Boot 项目中,使用拦截器功能通常需要以下 3 步:

  • 定义拦截器
  • 注册拦截器
  • 指定拦截规则

2、定义拦截器

HandlerInterceptor 接口中定义以下 3 个方法,如下表。

返回值类型 方法声明 描述
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) 该方法在控制器处理请求方法调用之后、解析视图之前执行,可以通过此方法对请求域中的模型和视图做进一步修改。
void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 该方法在视图渲染结束后执行,可以通过此方法实现资源清理、记录日志信息等工作。
/**
 * 通用拦截器
 */
public class CommonInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }
}

3、注册拦截器

创建一个实现了 WebMvcConfigurer 接口的配置类(使用了 @Configuration 注解的类),重写 addInterceptors() 方法

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    /**
     * 注册自定义的拦截器
     * @param registry
     */
    @Override    
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CommonInterceptor());
    }
}

4、指定拦截规则

如果是拦截所有,静态资源也会被拦截

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    /**
     * 注册自定义的拦截器
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CommonInterceptor()).addPathPatterns("/**")//拦截所有请求
                .excludePathPatterns("/","/login","*.html","/images/**");//放行的请求
    }
}


目录
相关文章
|
6月前
|
消息中间件 存储 安全
RabbiMQ原理与SpringBoot使用
RabbiMQ原理与SpringBoot使用
53 0
|
2天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
18 2
|
JSON 前端开发 Java
【SpringBoot学习笔记 十一】深入理解SpringBoot异常处理
【SpringBoot学习笔记 十一】深入理解SpringBoot异常处理
443 0
|
缓存 监控 NoSQL
SpringBoot进阶:掌握SpringBoot的高级特性
1. 使用Profiles进行环境配置 在开发、测试和生产环境中,我们的应用程序可能需要不同的配置。SpringBoot支持使用Profiles进行环境配置。通过创建不同的配置文件(如application-dev.yml、application-test.yml、application-prod.yml),我们可以为不同环境分别定义配置。通过设置spring.profiles.active属性来选择使用哪个配置文件:
418 0
|
前端开发 Java 数据安全/隐私保护
【SpringBoot学习笔记 十】深入理解SpringBoot拦截器
【SpringBoot学习笔记 十】深入理解SpringBoot拦截器
178 0
|
Java
学习Springboot框架一 之最简单的Springboot项目
学习Springboot框架一 之最简单的Springboot项目
71 0
|
druid Java 关系型数据库
SpringBoot基础知识入门详细介绍&基于SpringBoot的SSMP整合案例(2)
(一)快速上手SpringBoot SpringBoot入门程序开发 SpringBoot是由pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
|
XML Java 应用服务中间件
SpringBoot基础知识入门详细介绍&基于SpringBoot的SSMP整合案例(1)
(一)快速上手SpringBoot SpringBoot入门程序开发 SpringBoot是由pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
|
Java 应用服务中间件 Maven
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
233 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
|
JSON Java 应用服务中间件
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
178 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(二)
下一篇
无影云桌面