文章目录

      • 一、RESTful 风格
      • 二、Spring Boot 静态资源处理
      • 三、Spring Boot 首页(欢迎页)
      • 四、@PathVariable 注解
      • 五、拦截器(Interceptor)
      • 六、过滤器(Filter)
      • 七、触发器(Trigger)
      • 八、HandlerMapping 组件

一、RESTful 风格

  • 核心特点:将请求参数嵌入 URL 路径中,通过 HTTP 方法(GET/POST/PUT/DELETE 等)表达操作语义,使接口设计更简洁、规范。
  • 参数传递方式:使用 URL 路径占位符(如 /users/{id})传递参数,而非传统的 ?key=value 形式。
  • 示例
    • 获取 ID 为 1 的用户:GET /users/1(参数 id=1 放在 URL 中)
    • 更新 ID 为 1 的用户:PUT /users/1

二、Spring Boot 静态资源处理

  • 默认存放路径:项目中 src/main/resources/static/ 目录(或 public/resources/ 目录,优先级:resources > static > public)。
  • 访问规则
    • 静态资源可直接通过 URL 访问,路径为 /资源名(无需包含 static 前缀)。例如 static/image/logo.png 可通过 http://localhost:8080/image/logo.png 访问。
    • 静态资源请求(/static/** 路径模式)会被 Spring Boot 内置的资源处理器直接处理,不会经过 Controller 或 HandlerMapping,避免与业务接口冲突。

三、Spring Boot 首页(欢迎页)

  • 默认规则:Spring Boot 会自动识别 src/main/resources/static/src/main/resources/public/ 目录下的 index.html 文件作为首页。
  • 访问方式:直接访问应用根路径(如 http://localhost:8080)即可显示该首页。

四、@PathVariable 注解

  • 作用:用于从 URL 路径中获取参数,配合 RESTful 风格使用。
  • 示例
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {// id 的值从 URL 路径中的 {id} 占位符获取return userService.getUserById(id);
    }
    
  • 注意:若参数名与路径占位符名称不一致,需指定 value,如 @PathVariable("userId") Long id

五、拦截器(Interceptor)

  • 技术本质:基于 Spring MVC 的接口回调机制,用于在请求处理的预处理、后处理、完成后三个阶段进行拦截操作(如登录验证、日志记录)。
  • 实现方式
    1. 自定义类实现 HandlerInterceptor 接口,重写 preHandle(预处理)、postHandle(后处理)、afterCompletion(完成后)方法。
    2. 通过 WebMvcConfigurer 配置类的 addInterceptors 方法注册拦截器,并指定拦截/排除的路径。
  • 示例
    // 自定义拦截器
    public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 预处理逻辑(如验证登录状态)return true; // true 放行,false 拦截}
    }// 注册拦截器
    @Configuration
    public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**") // 拦截所有路径.excludePathPatterns("/login"); // 排除登录路径}
    }
    

六、过滤器(Filter)

  • 技术定位:Java EE 规范中的 Web 三大组件(Servlet、Filter、Listener)之一,基于 Servlet 容器,在请求进入 Servlet 之前或响应返回客户端之前进行过滤。
  • 与拦截器的区别
    维度过滤器(Filter)拦截器(Interceptor)
    技术依赖依赖 Servlet 容器依赖 Spring MVC 框架
    拦截范围所有请求(包括静态资源)仅拦截 Spring MVC 处理的请求(Controller 方法)
    执行时机请求进入 Servlet 之前Controller 方法调用前后
  • 使用场景:字符编码设置、跨域请求处理、敏感词过滤等。

七、触发器(Trigger)

  • 技术定位:数据库层面的机制,当数据库发生指定操作(如 INSERT/UPDATE/DELETE)时,自动触发预设的 SQL 逻辑。
  • 特点
    • 运行在数据库内部,与应用程序解耦。
    • 项目中慎用:迁移数据库时可能因语法差异(如 MySQL 与 Oracle 触发器语法不同)导致兼容性问题,且逻辑隐藏在数据库中,不利于维护。

八、HandlerMapping 组件

  • 作用:Spring MVC 中用于 映射请求 URL 到具体的 Handler(如 Controller 方法) 的组件,负责解析请求路径并找到对应的处理器。
  • 常见实现类
    1. BeanNameUrlHandlerMapping:根据 Bean 的名称(以 / 开头)映射 URL,如 Bean 名称为 /user,则处理 http://localhost:8080/user 请求。
    2. RequestMappingHandlerMapping(主流):解析 @RequestMapping 及其派生注解(@GetMapping@PostMapping 等),实现 URL 与 Controller 方法的映射,支持复杂的路径匹配和参数绑定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94399.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94399.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94399.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[2025CVPR-图象生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色

​研究背景与挑战​ ​临床需求​ 组织学染色(如H&E和IHC)是病理诊断的核心技术,但IHC染色存在耗时、组织消耗大、图像未对齐等问题。 虚拟染色技术可通过生成模型将H&E图像转换为IHC图像,但现有方法面临两大挑战: ​染色不真实性​:生成图像与真实IHC的分布存在…

【Leetcode】2106. 摘水果

文章目录题目思路代码CJavaPython复杂度分析时间复杂度空间复杂度结果总结题目 题目链接🔗 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti…

(CVPR 2024)SLAM卷不动了,机器人还有哪些方向能做?

关注gongzhonghao【CVPR顶会精选】众所周知,机器人因复杂环境适应性差、硬件部署成本高,对高效泛化一直需求迫切。再加上多传感器协同难题、真实场景数据获取不易,当下对迁移学习 机器人智能融合的研究也就更热烈了。不过显然,这…

Go语言 延 迟 语 句

延迟语句(defer)是Go 语言里一个非常有用的关键字,它能把资源的释放语句与申请语句放到距离相近的位置,从而减少了资源泄漏的情况发生。延迟语句是什么defer 是Go 语言提供的一种用于注册延迟调用的机制:让函数或语句可…

【go 】数组的多种初始化方式与操作

在 Go 语言中,数组是一种固定长度的数据结构,用于存储相同类型的元素。以下是 Go 中数组的多种初始化方式,结合搜索结果整理如下: (一)使用 var 关键字声明并初始化数组 使用 var 关键字声明数组时&#xf…

基于Java+MySQL 实现(Web)网上商城

悦桔拉拉商城1. 课设目的可以巩固自己之前所学的知识,以及学习更多的新知识。可以掌握业务流程,学习工作的流程。2. 开发环境硬件环境:Window11 电脑、Centos7.6 服务器软件环境:IntelliJ IDEA 2021.1.3 开发工具JDK 16 运行环境M…

高并发抢单系统核心实现详解:Redisson分布式锁实战

一、方法整体流程解析 #mermaid-svg-MROZ2xF7WaNPaztA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MROZ2xF7WaNPaztA .error-icon{fill:#552222;}#mermaid-svg-MROZ2xF7WaNPaztA .error-text{fill:#552222;strok…

Android12 User版本开启adb root, adb remount, su, 关闭selinux

开启adb root 直接看adb源码: __android_log_is_debuggable就是判断ro.debuggable属性值,感兴趣可以在 源码下grep下实现看看。auth_required :在adb源码下定义的全局变量,默认等于true,。看名字就是是否需要用户授权的flag, 这里不再继续跟…

金融专业高分简历撰写指南

一、金融求职简历原则:深度与亮点并存在金融行业求职时,一份出色的简历需突出经历深度与亮点。01 教育背景需如实填写毕业院校、专业、GPA及所学课程。金融行业不少公司对求职者学校和学历有严格标准,如“985”“211”院校或硕士以上学历等。…

专题:2025生命科学与生物制药全景报告:产业图谱、投资方向及策略洞察|附130+份报告PDF、原数据表汇总下载

原文链接:https://tecdat.cn/?p43526 过去一年,全球生命科学VC融资回暖至1021.5亿美元,并购交易虽下滑23%却聚焦关键赛道,创新药管线中GLP-1受体激动剂以170亿美元市场规模领跑,AI技术将研发周期缩短60%……这些数据背…

Compose笔记(四十)--ClickableText

这一节主要了解一下Compose中的ClickableText,在Jetpack Compose中,ClickableText是用于创建可点击文本的组件,其核心功能是通过声明式语法将文本设置为交互式元素,用户点击时可触发特定操作。简单总结如下:API含义 text&#xff…

面试必刷的数组三连:原地删除与合并

坚持用 清晰易懂的图解 多语言代码,让每道题变得简单! 呆头个人主页详情 呆头个人Gitee代码仓库 呆头详细专栏系列 座右铭: “不患无位,患所以立。” 面试必刷的数组三连:原地删除与合并前言目录1.移除元素2.删除有序…

力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)

1、题干 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1:输入:matrix [[1,2,3],[4,5,6],[7,8,9]]…

译|用户增长策略如何使用因果机器学习的案例

来自上传文件中的文章《[Causal Machine Learning for Growth: Loyalty Programs, LTV, and What to Do When You Can’t Experiment | by Torty Sivill | Towards AI]》 本文探讨了当 A/B 测试不可行时,如何利用因果推断从历史数据中获取洞察。技术亮点在于通过构建…

java~final关键字

final关键字final基本介绍final的使用细节final基本介绍 final是最终的意思,可以修饰类,属性,方法,局部变量什么时候会要使用到final呢? 1.想要类不被继承时 2.不希望类的某个属性的值被改变时 3.不想父类的某个方法被…

Node.js(四)之数据库与身份认证

数据库与身份认证 目录 数据库与身份认证 十三、数据库的基本概念 13.1 什么是数据库 13.2 常见的数据库及分类 13.3 传统型数据库的数据组织结构 1. Excel 的数据组织结构 2. 传统型数据库的数据组织结构 3. 实际开发中库、表、行、字段的关系 十四、安装并配置MySQ…

SpringBoot+SpringMVC常用注解

文章目录发展历程项目创建项目结构入门案例配置文件的两种方式:只能使用一种创建项目二入门案例常用知识及注解Controller:类上面加,SpringMVC的注解GetMapping:方法上面加Spring框架的两项核心功能Component:组件。控制反转,加在业务类上面&…

标准GS相位恢复算法

标准GS相位恢复算法详解与MATLAB实现 Gerchberg-Saxton (GS) 算法是一种经典的相位恢复方法,广泛应用于光学成像、衍射成像和全息技术等领域。该算法通过迭代过程从未知相位的强度测量中恢复相位信息。 算法原理 GS算法的核心思想是利用傅里叶变换关系在空间域和频率…

【Linux网络编程基础--socket地址API】

一、主机字节序和网络字节序主机字节序(Host Byte Order):你当前电脑的内存字节顺序(比如 x86 是小端)网络字节序(Network Byte Order):统一规定为大端序(高位字节在高位…

Linux路径MTU发现(Path MTU Discovery, PMTU)

Linux路径MTU发现(Path MTU Discovery, PMTU)机制是TCP/IP协议栈中确保数据包高效传输的核心技术。其核心目标是动态探测源主机到目的主机路径上的最小MTU(Maximum Transmission Unit),从而避免IP分片,提升…