黑马JavaWeb开发笔记16——请求(postman、简单参数、实体参数、@RequestParam映射)

news2024/11/13 10:08:57

文章目录

  • 前言
  • 一、postman工具
    • 1. 引入
    • 2. 介绍
    • 3. 安装
    • 4. 使用
  • 二、简单参数
    • 1. 原始方式(仅了解,以后的开发不会使用)
    • 2. SpringBoot方式
    • 3. 参数名不一致(@RequestParam映射)
  • 三、实体参数
    • 1. 简单实体对象
    • 2. 复杂实体对象
  • 总结


前言

本篇文章是2023年最新黑马JavaWeb开发笔记16:请求(postman、简单参数、实体参数、@RequestParam映射)的总结,帮助需要学习Web开发的朋友温故而知新。

  1. postman工具(安装、使用)
  2. 简单参数
  3. 简单实体参数
  4. 复杂实体参数

一、postman工具

1. 引入

  • 在当前最为主流的开发模式:前后端分离模式下,后端技术人员是无法知道前端页面的
  • 但是开发过程中需要测试自己所开发的程序,有两个方法:
    • 像之前SpringBoot入门案例中一样,直接使用浏览器,在浏览器中输入地址,测试后端程序
      • 弊端:在浏览器地址栏中输入地址这种方式都是GET请求,如果要用到POST请求,还需要程序员自己编写前端代码(比较麻烦)
    • 使用专业的接口测试工具(课程中我们使用Postman工具)

2. 介绍

  • Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
    在这里插入图片描述

  • Postman原是Chrome浏览器的插件,可以模拟浏览器向后端服务器发起任何形式(如:get、post)的HTTP请求

  • 使用Postman还可以在发起请求时,携带一些请求参数、请求头等信息

  • 作用常用于进行接口测试

3. 安装

在这里插入图片描述

  • 打开官网,直接下载对应版本
  • 官网地址:https://www.postman.com/downloads/
    在这里插入图片描述
  • 双击安装即可,过程中不需要任何操作(需要联网)
    在这里插入图片描述

4. 使用

  • 新用户直接创建账号
    在这里插入图片描述

  • 在这里点击Create Workspace
    在这里插入图片描述

  • 拟定名字,然后改为仅自己能看,最后创建
    在这里插入图片描述

  • 点击上方栏的**+号**,添加一个新的请求
    在这里插入图片描述

  • 这里会让你填写各信息和URL地址
    在这里插入图片描述

  • 我这里写了一个简单的SpringBoot程序,实现了在浏览器输出“Hello World~",我以我定义这个URL地址为例:
    在这里插入图片描述

  • 填写好URL地址,点击send,可以发现下面展示回来的数据为:Hello World~
    在这里插入图片描述

  • 如果要发起POST请求,只需要改为POST就可以了
    在这里插入图片描述

  • 保存直接Ctrl+S或者旁边的Save键,取一个请求的名字(注意这里不是路径,随便取就行),如果没有文件夹我们直接新建一个,最后点击保存即可
    在这里插入图片描述

  • 保存完毕后会发现左边出现了目录,就算后面关闭页面,也可以点击目录让这个请求出现
    在这里插入图片描述

二、简单参数

简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据
在这里插入图片描述
在后端程序中,接收传递过来的普通参数数据有两种方法:

  1. 原始方式
  2. SpringBoot方式

1. 原始方式(仅了解,以后的开发不会使用)

在原始的Web程序当中,需要通过Servlet中提供的API:HttpServletRequest(请求对象),获取
请求的相关信息。比如获取请求参数:
在这里插入图片描述
在Controller中,我们要想获取Request对象,可以直接在方法的形参中声明
HttpServletRequest 对象。然后就可以通过该对象来获取请求信息:
在这里插入图片描述

@RestController
public class RequestController {
	//原始方式
	@RequestMapping("/simpleParam")
	public String simpleParam(HttpServletRequest request){
		// http://localhost:8080/simpleParam?name=Tom&age=10
		// 请求参数: name=Tom&age=10 (有2个请求参数)
		// 第1个请求参数: name=Tom 参数名:name,参数值:Tom
		// 第2个请求参数: age=10 参数名:age , 参数值:10
		
		String name = request.getParameter("name");//name就是请求参数名
		String ageStr = request.getParameter("age");//age就是请求参数名
		int age = Integer.parseInt(ageStr);//需要手动进行类型转换
		System.out.println(name+" : "+age);
		return "OK";
	}
}

2. SpringBoot方式

在Springboot的环境中,对原始的API进行了封装,接收参数的形式更加简单。 如果是简单参数,参
数名与形参变量名相同,定义同名的形参即可接收参数。

@RestController
public class RequestController {
	// http://localhost:8080/simpleParam?name=Tom&age=10
	// 第1个请求参数: name=Tom 参数名:name,参数值:Tom
	// 第2个请求参数: age=10 参数名:age , 参数值:10
	
	//springboot方式
	@RequestMapping("/simpleParam")
	public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致
		System.out.println(name+" : "+age);
		return "OK";
	}
}

postman测试( GET 请求):
在这里插入图片描述

postman测试( POST请求 ):
在这里插入图片描述
结论:不论是GET请求还是POST请求,对于简单参数来讲,只要保证请求参数名Controller方法中的形参名保持一致 ,就可以获取到请求参数中的数据值。

3. 参数名不一致(@RequestParam映射)

以这段代码为例,请求参数名和形参名并不一样

@RestController
public class RequestController {
	// http://localhost:8080/simpleParam?name=Tom&age=20
	// 请求参数名:name
	//springboot方式
	@RequestMapping("/simpleParam")
	public String simpleParam(String username , Integer age ){//请求参数名和形参名不相同
		System.out.println(username+" : "+age);
		return "OK";
	}
}
  • 答案:运行没有报错。controller方法中的username值为:null,age值为20
  • 结论:对于简单参数来讲,请求参数名和controller方法中的形参名不一致时,无法接收到请求数据
  • 在开发中,遇到了这种请求参数名和controller方法中的形参名不相同的情况,可以使用Spring提供的@RequestParam注解完成映射
  • 在方法形参前面加上 @RequestParam 然后通过value属性执行请求参数名,从而完成映射。代码如下
@RestController
public class RequestController {
	// http://localhost:8080/simpleParam?name=Tom&age=20
	// 请求参数名:name
	//springboot方式
	@RequestMapping("/simpleParam")
	public String simpleParam(@RequestParam(name = "name") String username, Integer age ){
		System.out.println(username+" : "+age);
		return "OK";
	}
}

注意事项:
@RequestParam中的required属性默认为true(默认值也是true),代表该请求参数必须传
递,如果不传递将报错
在这里插入图片描述

如果该参数是可选的,可以将required属性设置为false

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name", required = false) String username, Integer age){
	System.out.println(username+ ":" + age);
	return "OK";
}

三、实体参数

  • 在使用简单参数做为数据传递方式时,前端传递了多少个请求参数,后端controller方法中的形参就要书写多少个。
  • 如果请求参数比较多,通过上述的方式一个参数一个参数的接收,会比较繁琐。
  • 此时,我们可以考虑将请求参数封装到一个实体类对象中
  • 要想完成数据封装,需要遵守如下规则:请求参数名与实体类的属性名相同
    在这里插入图片描述

1. 简单实体对象

定义POJO实体类:在user类里面存放所有需要被封装的属性(这里只有两个属性 name & age)
然后把get() set() toString()方法生成一下
在这里插入图片描述

写一下Controller方法:
在这里插入图片描述
直接启动服务,然后在postman里面进行测试

  • 参数名和实体类属性名一致
    在这里插入图片描述

  • 参数名和实体类属性名不一致
    在这里插入图片描述

2. 复杂实体对象

  • 复杂实体对象指:在实体类中有一个或多个属性,也是实体对象类型的。如下:

    • User类中有一个Address类型的属性(Address是一个实体类)
      在这里插入图片描述
  • 复杂实体对象的封装,需要遵守如下规则:

    • 请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套实体类属性参数
  • 定义POJO实体类:

Address实体类

public class Address {
	private String province;
	private String city;
	
	public String getProvince() {
		return province;
	 }
		
	public void setProvince(String province) {
		this.province = province;
	 }
	
	public String getCity() {
		return city;
	 }
		
	public void setCity(String city) {
		this.city = city;
	 }
	 
	@Override
	public String toString() {
		return "Address{" +
		"province='" + province + '\'' +
		", city='" + city + '\'' +
		'}';
	}
}

User实体类
在这里插入图片描述
Controller方法

@RestController
public class RequestController {
	//实体参数:复杂实体对象
	@RequestMapping("/complexPojo")
	public String complexPojo(User user){
		System.out.println(user);
		return "OK";
	}
}

Postman测试:
在这里插入图片描述
加粗样式


总结

本篇文章是2023年最新黑马JavaWeb企业级开发(知识清单)01:前端介绍、html实现标题格式内容的总结,帮助需要学习Web开发的朋友温故而知新。

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

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

相关文章

[CocosCreator]全栈接入微信支付宝SDK(V3)

原文再续,书接上一回!上一期我介绍了接入支付宝的SDK,本文就来讲讲微信的SDK接入.还是那句话,官方的文档,我只能用一句话形容:一言难尽!本屌还是一如既往,把"恶心的东西"嚼碎了喂给各位宝吃. 一.前言 首先还是要集齐可以召唤神龙的法器,给大家一一列举一下: 1.…

python学习第十节:爬虫基于requests库的方法

python学习第十节:爬虫基于requests库的方法 requests模块的作用: 发送http请求,获取响应数据,requests 库是一个原生的 HTTP 库,比 urllib 库更为容易使用。requests 库发送原生的 HTTP 1.1 请求,无需手动…

Notepad++插件:TextFX 去除重复行

目录 一、下载插件 TextFX Characters 二、去重实操 2.1 选中需要去重的文本 2.2 操作插件 2.3 结果展示 2.3.1 点击 Sort lines case sensitive (at column) 2.3.2 点击 Sort lines case insensitive (at column) 一、下载插件 TextFX Characters 点【插件】-【插件管理…

unity编辑器c#脚本

目录 1.编辑器窗口再介绍 1.1添加对象 1.2文件夹的管理 1.3参数的设置 1.4对象的移动方式 2.对于外形和材质的修改 2.1对于外形的修改 2.2对于材质的修改 3.添加有趣的组件 3.1如何添加组件 3.2添加刚体组件 3.3碰撞器的介绍 3.4添加c#组件 3.5c#脚本代码的说明 1…

通过知识蒸馏提升大模型训练效率

人工智能咨询培训老师叶梓 转载标明出处 随着模型规模的不断扩大,如GPT-4这样的模型拥有约1.7万亿参数,其预训练所需的巨大能源和计算资源引发了对可持续发展AI解决方案的迫切需求。麦吉尔大学的研究团队介绍了一种创新的方法来解决与LLMs预训练相关的效…

MySQL5.7基于mysqldump、xtrbackup、innobackupex工具进行全量备份/恢复、增量备份/恢复

mysql全量备份脚本 文章目录 前言一、数据库备份分类二、为什么需要备份?三、备份工具示例1.逻辑备份工具1.1.使用场景1.2.备份操作示例1.3.恢复操作示例 2.物理备份工具2.1.xtrbackup介绍2.2.使用场景2.3.安装percona-xtrabackup2.4.xtrbackup备份原理2.5.percona-…

西门子PLC读取时间相差8小时

当前时间与PLC读取到的时间相差8小时,如下图所示 原因:指令问题 模块时间总是存储在 CPU 时钟中,而不带因子“本地时区”或“夏令时”。之后,CPU 时钟将基于模块时间计算 CPU 时钟的本地时间。 解决办法:将读取时间指…

leetcode hot100_part01_哈希

1.两数之和 遍历数组,map中存在target - nums[i]就返回结果,不存在就把当前元素存入map; 49.字母异位词分组 分组,怎么分,用hashMap, key为每一组的标识,value为每一组包含的字符串(属于同一组的&#xff…

【笔记】第一节. 引言

• 轨道用钢的加工过程 • 钢轨结构及其标准 • 轨道结构特点 • 钢轨的商业化及其发展趋势 轨道用钢的加工过程 钢轨形式及其标准 钢轨的基本结构 轨头、轨腰、轨底。 钢轨的技术标准 • 铁道行业标准《TB/T2344-2003:43~75 kg/m 热轧钢轨订货技术…

腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目

致谢 本次学习宝塔部署spring boot项目,参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录,你可以换成 xshell 进入宝塔官网: https://www.bt.cn/new/download.html 我们采…

【Android】Handler用法及原理解析

文章目录 用处基本用法用法一:使用sendMessage和handleMessage方法用法二:使用post方法 法一工作原理Handler的sendMessageMessage成员变量 MessageQueueLooper主线程自动初始化子线程手动创建**prepare**loop Handler的dispatchMessage 法二工作原理Han…

机器学习中最常见的50个问题(进阶篇)

机器学习中最常见的50个问题 进阶篇 1.解释SVM的工作原理。 SVM,全称支持向量机(Support Vector Machine),是一种有监督学习算法,主要用于解决数据挖掘或模式识别领域中的数据分类问题。 SVM的工作原理是建立一个最…

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性,它是ES11(ES2020)中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么…

小程序开发设计-小程序简介①

1.小程序与普通网页开发的区别: 1.运行环境不同: 网页运行在浏览器环境中。 小程序运行在微信环境中。 2.API不同: 由于运行环境不同,所以小程序中,无法调用DOM和BOM的API。但是,小程序中可以调用微信环境提…

摊牌了!一文教会你轻松上手豆包MarsCode 编程助手!

豆包MarsCode 编程助手是豆包旗下的 AI 编程助手,提供以智能代码补全为代表的 AI 功能。豆包MarsCode 编程助手支持主流的编程语言和 IDE,在开发过程中提供单行代码或整个函数的编写建议。此外,它还支持代码解释、单测生成和问题修复等功能&a…

收藏!6个PPT素材模板网站,快速做出好看的PPT

找PPT模板一定要收藏好这6个网站,能让你快速做出好看的PPT,重点十可以免费下载,赶紧收藏! 1、菜鸟图库 ppt模板免费下载|ppt背景图片 - 菜鸟图库 菜鸟图库网有非常丰富的免费素材,像设计类、办公类、自媒体类等素材都…

时序必读论文05|PatchTST : 时序数据Patch已成趋势【ICLR 2023】

书接上回,我们在之前的文章已经分析了直接把transformer应用到时间序列预测问题的不足,其中我们总结了4个不足:分别是: 注意力机制的计算复杂度高,为 O(N^2),并且计算得出的权重仅有少部分有用;…

【TCP三次握手+四次挥手(个人理解版本)】

TCP协议介绍 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议(它是全双工工作模式)。以下是对它的具体介绍: 基本概念 定义:TCP是Transmission Control Protocol的缩写&#xff…

PHP无缝对接预订无忧场馆预订系统小程序源码

无缝对接,预订无忧 —— 场馆预订系统,让每一次活动都完美启航! 一、告别繁琐流程,预订从未如此简单 你是否曾经为了预订一个合适的场馆而焦头烂额?繁琐的咨询、确认、支付流程,让人心力交瘁。但现在&…

如何利用Java进行快速的足球大小球及亚盘数据处理与分析

在当今信息爆炸的时代,大量的数据产生和积累,对于企业和个人来说,如何高效地处理和分析这些数据成为了一项重要的任务。Java作为一门强大的编程语言,提供了丰富的工具和库,可以帮助我们快速进行数据处理与分析。下面将…