拦截器处理流程

NestJS 中间件与拦截器:请求处理流程详解 中间件的不同实现方式拦截器的应用场景管道的数据转换和验证异常过滤器的错误处理实际应用案例在下一篇文章中,我们将探讨 NestJS 的微服务架构实现。 阅读详情
用户请求 → WebConfig(拦截器配置) → LoginInterceptor(令牌验证) → ArticleController(处理业务)

假设我们有三个组件:

1. ArticleController - 业务处理器

  • 处理 /article/list 请求

  • 返回文章数据

2. LoginInterceptor - 登录拦截器

  • 检查请求头中的token

  • 验证用户是否登录

3. WebConfig - 配置类

  • 注册拦截器

  • 设置排除路径(登录、注册不需要拦截)

测试场景1:未登录用户访问文章列表

请求:

GET http://localhost:8080/article/list
Headers: 无Authorization头

执行流程:

  1. 请求到达服务器

  2. WebConfig检查路径:/article/list不在排除列表中,需要拦截

  3. LoginInterceptor.preHandle()执行:

String token = request.getHeader("Authorization"); // token = null
JwtUtil.parseToken(token); // 抛出异常

拦截器捕获异常:

response.setStatus(401); // 返回401未授权
return false; // 拦截请求,不继续执行

结果: 用户收到401错误,无法获取文章数据

测试场景2:已登录用户访问文章列表

步骤1:用户先登录获取token

POST http://localhost:8080/user/login
Body: {"username": "zhangsan", "password": "123456"}
Response: {"code":0, "message":"登录成功", "data":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}

步骤2:携带token访问文章列表

GET http://localhost:8080/article/list
Headers: Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

执行流程:

  1. 请求到达服务器

  2. WebConfig检查路径:需要拦截

  3. LoginInterceptor.preHandle()执行:

    String token = request.getHeader("Authorization"); // 获取到有效token
    Map<String,Object> claims = JwtUtil.parseToken(token); // 解析成功
    return true; // 放行请求
  4. 请求到达ArticleController.list():

    return Result.success("所有文章数据...");
  5. 结果: 用户收到文章数据

    {
      "code": 0,
      "message": "操作成功", 
      "data": "所有文章数据..."
    }

测试场景3:用户注册(不需要token)

请求:

POST http://localhost:8080/user/register
Body: {"username": "lisi", "password": "123456"}

执行流程:

  1. 请求到达服务器

  2. WebConfig检查路径:/user/register在排除列表中

  3. 跳过LoginInterceptor,直接处理注册逻辑

  4. 结果: 用户可以正常注册

Java 拦截器详解:全面掌握请求处理流程优化技巧 拦截器是 AOP(面向切面编程)的一种实现方式,允许你在不修改原有代码的情况下,在方法调用前后插入自定义逻辑。在 Java 中,拦截器主要应用于 Web 应用程序中,特别是在 Spring 框架中。 阅读详情

相关推荐

统信UOS开发环境支持Java

集成了JDK和多种IDE,为开发者提供了从代码编写、编译、调试到部署的一站式开发解决方案。

RZer的博客 2254

SpringMVC简介、拦截器执行流程、DispatcherServlet 处理流程

目录 1、什么是MVC 2、什么是SpringMVC 3、SpringMVC的特点 一、拦截器执行流程: 二、DispatcherServlet 处理流程 1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等 一类称为业务处理 Bean:指 Service 或 Dao 对

m0_61454947的博客 1854

Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)

本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。

weixin_29876033的博客 386

axios的处理链流程:添加请求拦截器、添加响应拦截器

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X...

JEFF_xieyuzhi的博客 1243

Tessent ATPG进阶:解锁多种Fault Model的工程实践与选型指南

本文深入探讨Tessent ATPG中多种Fault Model的工程实践与选型策略,涵盖Stuck-at、Transition、Bridge等核心模型的应用场景与配置技巧。通过实际案例解析,展示如何组合不同Fault Model提升芯片测试覆盖率,特别针对汽车电子、超低功耗芯片等复杂场景提供专业解决方案。

weixin_30219613的博客 198

从零实现机械臂抓取仿真:用MoveIt+Gazebo完成物体pick&place全流程

本文详细介绍了如何使用ROS的MoveIt框架与Gazebo仿真环境,从零构建机械臂抓取仿真系统。涵盖环境搭建、MoveIt配置、Gazebo集成、抓取动作实现等全流程,帮助开发者掌握机械臂控制的核心技术,实现高效的pick&place任务。

weixin_29250403的博客 476

第九章、拦截器_异常处理_SpringMVC的处理流程(重点)

一、拦截器==(重点)== 1、自定义拦截器概述 Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器可以实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter 适配器类 ​ ① ==preHandle():==这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进...

爱码者的博客 1067

保姆级教程:用K210麦克风阵列模块实现声源定位(附完整Python代码与坐标计算)

本教程详细介绍了如何使用K210麦克风阵列模块实现高精度声源定位,包括硬件连接、算法解析与实战代码。通过Python代码示例,展示了从原始数据获取到三维空间坐标计算的完整流程,适用于智能家居、机器人导航等场景。

weixin_42558093的博客 226

SpringMVC源码分析之——处理请求核心流程之拦截器的调用

DispatchServlet处理请求核心流程: 1. getHandler(processedRequest) 获取具体要执行的HandlerExecutionChain 2. getHandlerAdapter 获取处理适配器 3. mappedHandler.applyPreHandle 调用前置拦截器 4. 执行controller.method方法 5. mappedHandler.applyPostHandle 调用中置拦截器 6. processDispatchResult 视图的渲染 7

meser88的博客 226

433MHz无线通信避坑指南:如何解决信号干扰和误码问题

本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。

weixin_29288313的博客 417

【误码率仿真】基于matlab 小波变换OFDM误码率仿真

其中,与传统的 OFDM 相比,小波变换 OFDM 在进行调制和解调时,使用的是小波变换函数。需要注意的是,由于小波变换函数将频域信号转换为时域信号,因此与传统 OFDM 不同,小波变换 OFDM 中的信号需要在时域上添加循环前缀。与传统的 OFDM 不同,小波变换 OFDM 使用小波函数作为基函数,而非正弦函数作为基函数,因此可以在保持子载波正交性的同时,让子载波之间的带宽变得更加均匀。在频域进行信号加权,然后进行小波逆变换,得到时域信号。在接收端进行信号接收,去掉循环前缀并进行小波变换得到频域信号。

Fanjufei的博客 662

Spring MVC 学习(4) 拦截器、异常处理、运行流程、

1. 拦截器 1.概述 SpringMVC 提供了拦截器机制;允许运行目标方法之前进行一些拦截工作,或者目标方法运行之后进行一些其他处理;自定义的拦截器必须实现HandlerInterceptor接口 preHandle()方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。 postHandle()方

m0_38140207的博客 694

2023年美高赛HiMCM:A题蒲公英 思路

蒲公英,通常称为蒲公英,是一种原产于欧亚大陆的植物,现在在世界各地都可以找到[1]。这种植物很容易通过其亮黄色的花朵(图1)和独特的“马勃”种子头(图2)来识别。该头部的每颗种子都附着在一个类似降落伞的结构上,称为“冠毛”,有利于风的传播[2]。如果处于“马勃”阶段的单个蒲公英毗邻一块开阔的一公顷土地,请创建一个数学模型来预测蒲公英在 1、2、3、6 和 12个月内的传播情况。确保您的模型考虑了各种气候条件(例如温带、干旱和热带气候)对蒲公英生长的影响。2. 蒲 公英、人类和其他植物之间的关系很复杂。

斌擎科技 7402

从头开始学SpringMVC—04文件处理&拦截器&异常处理&执行流程

SpringMVC系列04部分——文件上传和下载、拦截器的使用、异常处理器、执行流程分析。

青春无问西东 岁月自成芳华 753

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程

在 SpringMVC 的核心配置文件中开启 mvc 的注解驱动,此时在 HandlerAdaptor 中会自动装配一个消息转换器:MappingJackson2HttpMessageConverter ,可以将响应到浏览器的 Java 对象转换为 Json 格式的字符串。在 Servlet3.0 环境中,容器会在类路径中查找实现 javax.servlet.ServletContainerInitializer 接口的类,如果找到的话就用它来配置Servlet 容器。

qq_45606619的博客 2000

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Struts 处理流程及拦截器原理模拟

首先送上官网高清无码架构图:

512

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

我们可以看到Struts2框架的工作流程是:用户请求 -> 拦截器链 -> Action处理 -> 返回结果 -> 视图呈现

在Struts2中,拦截器是一种可以在Action的执行过程中拦截请求并对其进行处理的组件。在Struts2中,有很多内置的拦截器,同时也支持用户自定义拦截器来实现特定的需求。在Struts 2框架中,内置了许多拦截器用于处理常见的需求和问题,例如:参数校验,异常处理,国际化等等。综上所述,拦截器链是Struts2框架中一个非常强大的特性,它允许开发者以插件的形式增强框架的功能,使得代码更加模块化和易于维护。以上只是Struts2框架中内置的部分拦截器,开发者还可以根据自己的需求编写自定义的拦截器。

[Blog][Domain] programb.blog.youkuaiyun.com 1037

Spring拦截器和异常处理的执行流程

拦截器执行流程1. 拦截器组件编写规则实现HandlerInterceptor接口,例如 public class CheckLoginInterceptor implements HandlerInterceptor{ public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object ar

zhaohan___的博客 895

java拦截器处理异常_Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程

SpringMVC拦截器Spring MVC也可以使用拦截器对请求进行拦截处理,可以自定义拦截器来实现特定的功能,自定义的拦截器可以实现HandlerInterceptor接口中的三个方法,也可以继承HandlerInterceptorAdapter适配器类按照需要那个方法,就实现哪个方法过滤器与拦截器区别过滤器:过滤器在Servlet之前操作拦截器:拦截器在Servlet之后,请求处理器(Con...

weixin_42261886的博客 271

架构师进阶之路——3、Spring MVC-处理流程、拦截器(一)

一、背景 MVC 体系结构:表现层 、业务层、持久层,MVC属于表现层架构。 MVC 全名是 Model View Controller,是 模型(model)-视图(view)-控制器(controller) 的缩写, 是一 种用于设计创建 Web 应用程序表现层的模式。MVC 中每个部分各司其职: Model(模型):模型包含业务模型和数据模型,数据模型用于封装数据,业务模型用于处理业 务。 View(视图): 通常指的就是我们的 jsp 或者 html。作用一般就是展示数据的。通常视图是依据

moxiaolin的博客 362

SpringMVC 高阶实战:文件上传下载、异常处理、拦截器与执行流程深度解析

本文详解 SpringMVC 文件上传(Spring6 配置变化/避免覆盖的 UUID 策略)、下载(ResponseEntity 流式响应)、异常处理(自定义跳转与友好提示),深入剖析拦截器执行顺序(源码级流程)及 SpringMVC 核心执行流程(HandlerMapping/适配器/视图渲染),助你掌握企业级请求处理与组件协作机制。

m0_73941339的博客 896

Freelens 应用渲染引擎解析:@freelensapp/react-application 的架构与扩展机制

`@freelensapp/react-application` 是 Freelens(Kubernetes 桌面 IDE)渲染进程的"应用壳"技术包:它负责在应用完成加载后,把整个 React 应用挂载到页面上,并以依赖注入(DI)的方式对外暴露若干扩展点,让主题、全局快捷键、通知面板、对话框等能力可以按声明式的方式接入。读完本文,你将掌握该包的安装与接入方式、它与 `@freelensapp/

gitblog_01181的博客 325

sentinel服务--自定义异常处理--springMVC拦截器--拦截器流程模拟

安装Sentinel服务 在sentinel对应目录,打开命令行(cmd),启动运行sentinel 使用1.8.1版本的 java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar 1.添加sentinel依赖 <!--sentinel依赖,添加完此依赖以后,会在底层添加一个拦

weixin_60590058的博客 1400

springmvc 全局异常处理 and 拦截器、拦截器的执行流程

springmvc 全局异常处理 and 拦截器、拦截器的执行流程

pig_ning的博客 318

springmvc-文件上传 拦截器 全局异常 返回json 处理流程

spring mvc上传 添加项目依赖 <!-- 上传组件 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>commons-file

lx1315998513的博客 429
上一篇: @Autowired注解
下一篇: 关于mapper查询数据库返回数据的思考
草根研究生
博客等级 码龄5年 0粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值