《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
|
26天前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
19 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
6月前
|
监控 Java 应用服务中间件
SpringBoot3 快速入门及原理分析
SpringBoot3 快速入门及原理分析
|
6月前
|
Java 应用服务中间件 开发工具
SpringBoot简介、案例步骤及与Spring的对比
SpringBoot简介、案例步骤及与Spring的对比
57 0
|
JSON 前端开发 Java
【SpringBoot学习笔记 十一】深入理解SpringBoot异常处理
【SpringBoot学习笔记 十一】深入理解SpringBoot异常处理
438 0
|
SQL 监控 druid
《springboot实战》第八章 springboot 整合Druid
《springboot实战》第八章 springboot 整合Druid
267 1
|
前端开发 Java 数据安全/隐私保护
【SpringBoot学习笔记 十】深入理解SpringBoot拦截器
【SpringBoot学习笔记 十】深入理解SpringBoot拦截器
175 0
|
Java 调度 Spring
SpringBoot与任务(十一)
SpringBoot与任务(十一)
101 0
SpringBoot与任务(十一)
|
druid Java 关系型数据库
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
492 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(三)
|
Java 应用服务中间件 Maven
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)
227 0
《SpringBoot篇》01.Springboot超详细入门(基础篇)(一)