学习日记-SpringMVC-day49-9.4

知识点:


1.RequestMapping(3)

知识点

核心内容

重点

@RequestMapping注解的parameters属性

通过parameters指定请求参数条件

(如bookID),控制请求匹配规则(必须包含/排除特定参数或值)

参数存在性检查 vs 参数值限制(如parameter1!=value1)

多参数条件组合

支持逗号分隔多参数条件

(如parameter1=value1,parameter2),同时校验参数存在性及值匹配

值限制参数与无值限制参数的混合写法

请求参数自动绑定

方法形参(如String bookID)自动接收请求中同名参数的值

形参与parameters属性同名时的绑定机制

测试案例:search方法

@RequestMapping(value="/search", method=GET, parameters="bookID") + 形参接收bookID,输出并跳转页面

无参数请求报错 vs 带参数请求成功的对比

2.RequestMapping(4)

知识点

核心内容

重点

Request参数设置

在request.js页面添加代码,演示parameters的使用,要求携带bookID参数

问号后参数格式(?bookID=100)与工程路径处理

参数校验机制

通过parameters属性强制校验请求参数(如bookID必须存在且值需匹配100)

参数名不匹配(bookID vs bookIDx)或值不匹配(200 vs 100)触发400错误

条件表达式扩展

支持 = 和 != 运算符限制参数值

动态校验逻辑(如bookID!=100时拒绝该值)

工程路径处理

强调斜杠对路径的影响(如/user/search需避免重复斜杠)

路径拼接错误导致缺失工程路径

3.RequestMapping(5)

知识点

核心内容

重点

Ant风格资源地址匹配规则

问号匹配单个字符,星号匹配任意字符,双星号匹配多层路径

双星号与单星号的区别(多层路径 vs 单层路径)

单星号通配符

/user/*/createUser 匹配单层任意路径(如aaa/bbb)

星号必须对应一层具体路径

双星号通配符

/user/​**​/createUser 匹配零到多层路径(如空/aa/aa/bb/cc)

零路径的特殊情况

问号通配符

/user/createUser?? 匹配固定长度任意字符(如AA/BB)

严格限定字符数量

实战配置案例

@RequestMapping("/user/message​**​") 实现多层路径匹配

需注意路径拼接规则(类级路径+方法级路径)

测试验证方法

通过JSP超链接和Postman工具测试不同URL匹配情况

前端路径斜杠处理

4.RequestMapping(6)

知识点

核心内容

易混淆点

URL路径变量绑定

通过@PathVariable注解实现URL占位符与形参的自动绑定

占位符命名形参命名的关系(占位符必须匹配注解值,形参名可自定义)

RESTful风格参数传递

使用/user/reg/{username}/{id}形式替代传统?key=value传参方式

路径变量与传统查询字符串参数的应用场景区分

注解组合使用

@RequestMapping与@PathVariable的配合使用机制

注解值必须与URL模板变量严格一致

参数接收原理

通过反射机制实现路径变量到方法参数的自动赋值

前端URL结构与后端处理方法的层级对应关系

实战测试验证

演示/user/reg/k/300如何映射到name="k"和id=300

URL前缀路径(/user/reg)必须精确匹配控制器映射

5.RequestMapping注意事项(1)

知识点

核心内容

重点

RequestMapping注解的URL映射规则

URL路径不可重复,同一控制器内不同方法若配置相同路径会导致项目启动报错

语法检查阶段无法检测重复,需通过运行时异常(如There is already...错误)发现

重复URL的典型错误案例

UserHandler类中hi()与hi2()方法均配置路径/hi,引发"already mapped"冲突

报错信息明确提示重复映射的方法名(如user.hi())

问题复现与验证方式

通过重启项目触发异常,观察控制台输出的重复路径冲突提示

需区分语法错误(IDE提示)与运行时错误(部署阶段暴露)

6.RequestMapping注意事项(2)

知识点

核心内容

重点

请求映射简写形式

@PostMapping

@RequestMapping(method = RequestMethod.POST) 的简写,同理适用于 @GetMapping、@PutMapping、@DeleteMapping

注解等价性:两种写法功能相同,但简写形式更简洁

请求方式限制

使用 @PostMapping 后,仅允许 POST 请求,其他请求方式(如 GET)会报错

测试验证:通过修改请求方式触发错误,证明注解生效

源码解析

@PostMapping 源码中明确标注为 @RequestMapping(method = RequestMethod.POST) 的快捷方式

关键注释:"Shortcut for @RequestMapping(method = RequestMethod.POST)"

同类注解

除 @PostMapping 外,还有 @GetMapping、@PutMapping、@DeleteMapping 等,用法一致

命名规律:前缀对应 HTTP 方法名

7.RequestMapping注意事项(3)

知识点

核心内容

重点

表单/超链接数据提交规则

提交参数名需与目标方法参数名严格一致(如email字段需匹配形参String email)

参数名不一致时不会报错,但接收值为null

GET请求参数绑定示例

通过@GetMapping路径(如/hello3)和URL参数(?email=xx@xx.com)自动绑定形参

需确保URL参数名(email)与形参名完全一致

空值处理机制

参数名不匹配时,后端接收空值而非抛出异常

需主动检查参数是否为空,避免逻辑漏洞

动态演示案例

通过浏览器地址栏直接测试(如/user/hello3?email=xx@xx.com),后台成功捕获参数值

未传参时控制台显示email: null

8.Postman介绍

知识点

核心内容

重点

Postman工具介绍

功能强大的HTTP请求测试工具,支持GET/POST/PUT/DELETE等请求模拟,无需开发前端页面即可测试后端接口

与手动编写测试页面的对比:工具效率更高,但需注意请求参数配置准确性

学习必要性

后端开发人员必备工具,简化Web层Controller测试流程,提升开发效率

版本选择

工具核心功能

模拟HTTP请求、接收响应数据,支持多种请求类型

功能取舍:仅学习常用功能,无需掌握全部高级特性

资源获取

官网提供下载(www.postman.com)和文档(learning.postman.com)

版本差异:新版功能可能增加学习成本,旧版更稳定

9,Postman安装

知识点

核心内容

重点

Postman安装步骤

1. 下载软件(已提供资源);

2. 双击安装(默认系统盘路径);

3. 桌面生成快捷图标

无需自定义安装路径;

安装注意事项

- 需管理员身份运行;

- 安装过程禁止乱点;

- 首次启动较慢

自动启动与手动双击的区别

异常处理

未自动启动时:双击桌面图标手动启动

系统兼容性差异

10.Postman快速入门(1)

知识点

核心内容

重点

Postman基础功能

发送HTTP请求(GET/POST)、管理请求集合(Collections)、查看响应数据(HTML/JSON)

请求方式选择(GET vs POST)、响应数据格式(Raw vs Preview)

Postman界面设置

调整字体大小(File → Settings → Font Size)、界面缩放快捷键(Ctrl+/-)

快捷键冲突(需区分系统全局快捷键)

百度GET请求实战

输入www.baidu.com → 选择GET方式 → Send → 解析返回的HTML数据

参数携带(Query Params vs Headers)、预览模式(Preview显示不全问题)

账号注册与免登录

通过邮箱注册(Create Account)或直接使用(Skip登录)

工作空间同步(注册账号可跨设备同步请求历史)

请求集合管理

创建Collection保存请求 → 命名规范(如hsp_百度) → 分类管理

集合共享(团队协作时需导出/导入)

响应数据分析

Status Code(如200)、耗时、数据大小 → Preview模式(网页渲染效果)

HTML解析差异(动态内容可能缺失)

11.Postman快速入门(2)

知识点

核心内容

重点

HTTP请求创建

New HTTP Request操作步骤,包含命名、请求方式、URL设置

参数(parameter)与头信息(headers)配置区别

Connection管理机制

请求以connection集合形式管理,首次保存需创建集合

新建请求与选择已有集合的逻辑关系

请求保存流程

Save HTTP Request触发对话框的两种情形(新建/选择集合)

集合与单个请求的从属关系

响应数据解析

Pretty(原生数据)与Preview(网页渲染)双模式对比

测试时数据正确性优先于界面展示

搜狐GET请求案例

完整演示从创建请求解析HTML响应的全流程

集合中多请求的并行管理

Postman测试核心价值

重点验证服务器返回数据而非页面样式

接口测试与UI测试的本质差异

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

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

相关文章

【Day 50 】Linux-nginx反向代理与负载均衡

概述在现代 Web 架构中,Nginx 作为高并发、高性能的 HTTP 和反向代理服务器,被广泛应用于提升服务性能、增强系统安全性和实现负载均衡。其中,反向代理能够隐藏后端服务器信息并优化请求处理流程,负载均衡则可将请求分发到多个后端…

vue中配置 ts

在 Vue 项目中配置 TypeScript(TS)可以提升代码的类型安全性和开发体验。以下是在 Vue 项目(基于 Vite)中配置 TypeScript 的详细步骤和关键配置: 一、创建支持 TypeScript 的 Vue 项目 如果是新建项目,推…

阿里云镜像地址获取,并安装 docker的mysql和nginx等服务,java,python,ffmpeg,go等环境

阿里云那个镜像地址获取 阿里云镜像加速器不是一个通用的 registry.cn-hangzhou.aliyuncs.com,而是你账号专属的,比如这样: https://abcd1234.mirror.aliyuncs.com👉 登录阿里云控制台获取: 阿里云镜像加速器 然后替…

conda环境导出

1. 激活你想要打包的环境首先,确保你激活了你要打包的 conda 环境:conda activate qwen2. 导出环境配置使用 conda 命令将当前环境的配置导出为一个 .yml 文件,记录下环境中所有的依赖和版本:conda list --export > techgpt_en…

openEuler2403安装部署Kafka

文章目录 openEuler2403安装部署Kafka with KRaft一、前言1.简介2.架构3.环境 二、正文1.部署服务器2.基础环境1)JDK 安装部署2)关闭防火墙 3.单机部署1)下载软件包2)修改配置文件3)格式化存储目录4)单机启…

发布工业智能体,云从科技打造制造业AI“运营大脑”

近日,在2025世界智能产业博览会重庆市工业智能体首发仪式现场,云从科技重磅发布经营决策-产线运营智能体,为制造业的智能化转型提供了全新的解决方案。该智能体的亮相,不仅代表着人工智能技术在工业领域的深度应用,更标…

【Linux基础】parted命令详解:从入门到精通的磁盘分区管理完全指南

目录 前言 1 parted命令概述 1.1 什么是parted 1.2 parted与fdisk的对比 1.3 parted的主要优势 2 parted命令的安装与基本语法 2.1 在不同Linux发行版中安装parted 2.2 parted的基本语法 2.3 parted的工作模式 3 parted交互式命令详解 3.1 交互式操作流程 3.2 主要…

如何在路由器上配置DHCP服务器?

在路由器上配置DHCP服务器的步骤因品牌(如TP-Link、华为、小米、华硕等)略有差异,但核心流程一致,主要包括登录管理界面、开启DHCP功能、设置IP地址池及相关参数。以下是通用操作指南: 一、准备工作 确保电脑/手机已连…

HTML和CSS学习

HTML学习 注释 <!-- -->组成 告诉浏览器我是html文件<!DOCTYPE html> <title>浏览器标签</title> <body> <!--- 其中是主要内容 ---> <p> 段落 </p> </body> </html> (结束点…

OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析

摘要 因为工作久了的缘故&#xff0c;接触过不少数据库。公司的管理系统用的MySQL&#xff0c;财务系统用的Oracle。随着时代发展&#xff0c;国产开源数据库已经在性能上能与这些国际知名顶尖数据库品牌相媲美&#xff0c;其中OpenTenBase以其开放环境和优越性能脱颖而出&…

Oracle 备份与恢复常见的七大问题

为了最大限度保障数据的安全性&#xff0c;同时能在不可预计灾难的情况下保证数据的快速恢复&#xff0c;需要根据数据的类型和重要程度制定相应的备份和恢复方案。在这个过程中&#xff0c;DBA的职责就是要保证数据库&#xff08;其它数据由其它岗位负责&#xff09;的高可用和…

StringBuilder类的数据结构和扩容方式解读

目录 StringBuilder是什么 核心特性&#xff1a; StringBuilder数据结构 1. 核心存储结构&#xff08;基于父类 AbstractStringBuilder&#xff09; 2. 类定义与继承关系 3. 数据结构的核心特点 StringBuilder数据结构的初始化方式 1. 无参构造&#xff1a;默认初始容量…

LangChain实战(十七):构建与PDF/PPT文档对话的AI助手

本文是《LangChain实战课》系列的第十七篇,将专篇深入讲解如何构建能够与PDF和PPT文档进行智能对话的AI助手。通过学习本文,您将掌握复杂格式文档的解析技巧、文本与表格处理技术,以及实现精准问答的系统方法。 前言 在日常工作和学习中,PDF和PPT文档是我们最常接触的文档…

鱼眼相机模型

鱼眼相机模型 最近涉及鱼眼相机模型、标定使用等&#xff0c;作为记录&#xff0c;更新很久不曾更新的博客。 文章目录鱼眼相机模型1 相机成像2 鱼眼模型3 畸变3.1 适用针孔和MEI3.2 Kannala-Brandt鱼眼模型4 代码实现1 相机成像 针孔相机&#xff1a;所有光线从一个孔&#xf…

大语言模型提示词工程详尽实战指南

引言&#xff1a;与大型语言模型&#xff08;LLM&#xff09;高效对话的艺术大型语言模型&#xff08;LLM&#xff09;——例如我们熟知的GPT系列、Claude、Llama等——在自然语言处理&#xff08;NLP&#xff09;领域展现了惊人的能力&#xff0c;能够执行文本摘要、翻译、代码…

HTTP 请求体格式详解

1. 概览与概念 Content-Type&#xff1a;HTTP 请求/响应头&#xff0c;表示消息体的媒体类型&#xff08;MIME type&#xff09;。服务端用它决定如何解析请求体。常见场景&#xff1a; 纯结构化数据&#xff08;JSON&#xff09; → application/json表单 文件上传 → multip…

事务设置和消息分发

事务 RabbitMQ是基于AMQP协议实现的&#xff0c;该协议实现了事务机制&#xff0c;因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作&#xff0c;RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c;要么 全部成功&#xff0c;要么全部失败.| 前…

Python 中 try / except / else / finally 异常处理详解

1. 基本结构 try:# 可能会抛出异常的代码 except SomeException as e:# 捕获并处理异常 else:# 如果 try 中代码没有异常&#xff0c;就执行这里 finally:# 无论是否发生异常&#xff0c;最后都会执行这里2. 各部分的作用 try 用途&#xff1a;包含可能发生异常的代码段。如果代…

冰火岛 Tech 传:Apple Foundation Models 心法解密(下集)

引子 上集说到冰火岛冰屋内,谢逊、张翠山、殷素素三人亲见 “指令(Instructions)” 如何让 AI 脱胎换骨,从木讷报地名的 “愣头青”,变身为文采斐然的 “旅行作家”。 正当素素惊叹这 AI 武学的奇妙时,谢逊却突然神色一凛,指着手腕上用冰屑刻的 “4096” 字样道:“这等…

Qt信号与槽机制全面解析

✨ 1. 核心概念信号与槽是Qt独创的一种对象间通信机制&#xff0c;它使得一个对象的状态变化或事件发生能够自动通知其他对象作出响应&#xff0c;从而实现高度解耦的代码设计。1.1 信号&#xff08;Signals&#xff09;定义&#xff1a;信号是由对象在特定事件发生时发出&…