Javaweb学习记录(二)web开发入门(请求响应)

第一个基于springboot的web请求程序

通过创建一个带有springboot的spring项目,项目会自动生成一个程序启动类,该类启动时会启动该整个项目,而我们需要写一个web请求类,要求在本地浏览器上发送请求后,浏览器显示Hello,springboot,且控制台打印该语句。

其中的@RestController注解表示这是一个请求处理类,能向浏览器发送请求,而@RequestMapping注解则时表示下面的是一个请求方法,注解后的值为请求路径,在通过浏览器访问本地也就是localhost8080/hello的时候,就会实现注解下的方法

package com.itazhang.demos.web.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController//表示这是一个请求处理类
public class HelloController {
    @RequestMapping("/hello")//表示这是浏览器的请求路径
    public String hello(){
        System.out.println("Hello,springboot");
        return "Hello,springboot";
    }
}

HTTP协议

HTTP请求格式

HTTP响应格式

使用Postman发送请求 

Postman是一款非常好用的请求测试软件,将需要测试的地址输入进postman,就能类似于浏览器一样能对该接口进行测试,而在springboot创建的项目中使用相同的参数名的方法(例如请求发送的是name,那么参数的名字也得是name)就能接收数据,如下:

如果接收请求的参数名字不一样则需要注解@RequestParam 来完成映射,将注解后的参数名映射给后面方法里的参数名,如下:

postman界面

这是一个get请求所以需要将需要请求的内容写在请求行

如果是post请求,就需要将请求内容写在请求体中,也就是Postman的body中,如下:

 使用对象来接收数据

在之前接收Postman发送来的数据时,需要定义一个个与发送的请求参数名字相同的参数的方法,这样在请求数据较多的时候是非常不方便的,这个时候我们能在后端写一个实体类用来接收请求数据,实体类中的名字也与传输的请求一致,将请求过来的数据直接实例化成该类的对象,这样就非常的简便,如下:

定义一个带参数的实体类

将s输入请求传入该实体类的方法

 

使用集合和数组来接收请求数据 

使用数组接收请求数据时,将一个对应类型的数组传入到接收方法中即可,但是注意数组名字得与请求数据的名字相同,例如我下面请求传递两个name也就是名字。

使用集合接收数据时,也是将一个对应类型的集合传入到方法中,也得集合名字与请求数据的名字相同,且在使用集合来储存请求数据时,传入的集合前面得添加@RequestParam注解,如下:

 日期时间类型数据的接收和请求(@DateTimeFormat)

日期时间类型的也是将LocalTimeDate类型的对象传入接收方法中,名字与请求的名字相同,且在该类对象的前面需要添加@DateTimeFormat注解,注解后面添加请求的日期时间格式,具体格式例子如下:yyyy-MM-dd HH-mm-ss,请求数据和代码如下:

Json类型数据的请求与接收 (@RequestBody)

Json为JavaScript里面的一种语言格式,其主要被用来作为网络数据传输的载体,而从前端发送过来的请求数据基本上都是json格式的数据,后端接收请求数据的话主要是使用封装实体类的方式来进行接收数据,该实体类中的属性名字得与json里的名字相同,属性为其他类的值的话,其他类内部的属性值也必须与json代码中的名字相同。

封装实体类如下:

postman传递json如下:因为需要传递json的数据,所以需要post请求,且在post请求下的raw中书写json代码。

 

接收数据方法如下:需要在该实体类对象前加上@RequesBody注解,这样的话就标准着将json中的数据会封装到这个实体类的中

 

 接收请求的路径(@ParthVariable)

在实际开发中可能请求的路径后面跟着子路径名,那么我想获取子路径名,就得使用下面方法

 这是发送的请求数据

接收路径参数 ,以下的{id}表示这是一个可变的参数,而使用@pathVariable注解能将后面的参数绑定起来,从而获取到该参数 ,例如发送过来path路径后面的子路径为1,我通过获取绑定的这个id就能得到该1参数,如果子路径为10,那么可以通过绑定的这个id获取到10参数。如果要获取path路径后面的多个参数就添加多个大括号加参数,且在传入方法时使用@PathVariable注解绑定即可,如

@RequestMapping("/path/{id}/{id2}")
public String pathParam(@PathVariable Integer id,@PathVariable Integer id2){
    System.out.println(id+" "+id2);
    return "ok";
}

使用result类统一响应相关结果 

使用result类对相关的响应结果进行封装,如果需要响应前端的请求的话,直接返回调用result封装类里面的相关方法,并把需要响应的值传入这些方法,这样前端收到的响应结果就是规范化的。

服务端代码如下:

客户端接收返回数据如下:

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

排序问题—java实现

冒泡排序 算法思想: 每次比较相邻元素,若逆序则交换位置,每一趟比较n-1次,确定一个最大值。故需比较n趟,来确定n个数的位置。 外循环来表示比较的趟数,每一趟确定一个最大数的位置内循环来表示相邻数字两…

如何在wps的excel表格里面使用动态gif图

1、新建excel表格,粘贴gif图到表格里面,鼠标右键选择超链接。 找到源文件, 鼠标放到图片上的时候,待有个小手图标,双击鼠标可以放大看到动态gif图。 这种方式需要确保链接的原始文件位置和名称不能变化!&a…

阿里云发布 AI 编程助手 “通义灵码”——VSCode更强了 !!

文章目录 什么是 通义灵码(TONGYI Lingma) 快速体验“通义灵码” 什么是“通义灵码”(TONGYI Lingma) 通义灵码(TONGYI Lingma),是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff…

创建一个electron-vite项目

前置条件:非常重要!!! npm: npm create quick-start/electronlatest yarn: yarn create quick-start/electron 然后进入目录,下载包文件,运行项目 到以上步骤,你已经成功运行起来一个 electr…

从底层结构开始学习FPGA(0)----FPGA的硬件架构层次(BEL Site Tile FSR SLR Device)

系列目录与传送门 《从底层结构开始学习FPGA》目录与传送门 Xilinx的FPGA,从硬件架构的角度可以划分为6个层次,从底层到顶层依次是: BEL(最底层单元)SiteTileFSRSLRDevice(FPGA芯片) 接下来我…

论文解析:V3D: Video Diffusion Models are Effective 3DGenerators

摘要: 自动三维生成最近引起了广泛关注。最近的方法大大加快了生成速度,但由于模型容量有限或三维数据,生成的物体通常不够精细。在视频扩散模型最新进展的推动下,我们引入了 V3D,利用预训练视频扩散模型的世界模拟能…

力扣17. 电话号码的字母组合

Problem: 17. 电话号码的字母组合 文章目录 思路及解法复杂度Code 题目描述 思路及解法 1.将电话号码和对应的数组存入数组中创建映射关系; 2.编写,并调用回溯函数,当决策阶段等于digits的长度时,将当前的决策路径添加到结果集合中…

自学Python第二十九天-feapder框架创建爬虫

自学Python第二十九天-feapder框架创建爬虫 安装feapder 的设计架构feapder 框架的简单使用简单创建爬虫简单爬取数据简单的数据保存 中间件校验浏览器渲染使用浏览器渲染获取接口数据 feapder是一款上手简单,功能强大的 Python爬虫框架,内置 AirSpide…

linux安装WordPress问题汇总,老是提示无法连接到FTP服务器解决方案

最近在做一些建站相关的事情,遇到一些大大小小的问题都整理在这里 1.数据库密码和端口,千万要复杂一点,不要使用默认的3306端口 2.wordpress算是一个php应用吧,所以安装流程一般是 apache http/nginx——php——mysql——ftp &…

嵌入式学习第二十九天!(数据结构的概念、单向链表)

数据结构: 1. 定义: 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 1. 程序设计: 将现实中大量而复杂的问题以特定的数据类型和特定的数据结构存储在内存中,并在此基础上实现某个特定的功…

Python深度学习技术教程

原文链接:Python深度学习技术教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597949&idx4&sn65c0d353d02b060fec98ec799f217ae1&chksmfa823e9acdf5b78cd71cfcb060e3b60125b17afbe3e19ef423d4709d2df7fc93d90ce3097253&token14787…

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker和K8S理解 一、docker的问世虚拟机是什么?Docker的问世?docker优点及理解 二、Kubernetes-K8SK8S是什么?简单了解K8S架构Master节点Node节点K8S架构图 一、docker的问世 在LXC(Linux container)Linux容器虚拟技术出现之前,业…

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年,主要目标是应对车辆的电子和电气(E/E)系统失效。该方法践行至今,有些系统功能安全方法已经成熟,例如电池管理系统(BMS),并且…

Javaweb学习记录(三)请求响应案例

下面为一个请求响应案例,postman发送请求,服务器响应将一个xml文件中的数据通过读取解析,将其用Result类标准的格式返回前端,在前端用json的方式显示 后端Controller代码 1、通过本类的字节码文件得到类加载器并寻找到需要解析的…

vue2使用webSocket双向通讯

基于webSocket实现双向通信,使用webworker保持心跳。 由于浏览器的资源管理策略会暂停或限制某些资源的消耗,导致前端心跳包任务时效,后端接收不到webSocket心跳主动断开,因此需要使用webworker保持心跳 引入webworker npm insta…

【Ubuntu】Ubuntu的安装和配置

下载ubuntu镜像 https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-desktop-amd64.iso 一、Ubuntu安装 1.新建虚拟机 1.1按照它的提示创建用户;后面一直下一步就好 2.启动Ubuntu虚拟机 2.1设置为中文键盘 2.2默认即可;若是有低需求也可以选择最小…

Coursera上Golang专项课程3:Concurrency in Go 学习笔记(完结)

Concurrency in Go 本文是 Concurrency in Go 这门课的学习笔记,如有侵权,请联系删除。 文章目录 Concurrency in GoMODULE 1: Why Use Concurrency?Learning Objectives M1.1.1 - Parallel ExecutionM1.1.2 - Von Neumann BottleneckM1.1.3 - Power W…

Python基础(六)之数值类型元组

Python基础(六)之数值类型元组 1、简介 元组: 在Python中是内置的数据结构之一,是一个不可变的序列,切可以是任何类型数据。元组的元素放在()小括号内。一般我们希望数据不改变的时候使用 不可变与可变的…

Day69:WEB攻防-Java安全JWT攻防Swagger自动化算法签名密匙Druid泄漏

目录 Java安全-Druid监控-未授权访问&信息泄漏 黑盒发现 白盒发现 攻击点 Java安全-Swagger接口-导入&联动批量测试 黑盒发现 白盒发现 自动化发包测试 自动化漏洞测试 Java安全-JWT令牌-空算法&未签名&密匙提取 识别 JWT 方式一:人工识…

web渗透测试漏洞复现:Elasticsearch未授权漏洞复现

web渗透测试漏洞复现 Elasticsearch未授权漏洞复现Elasticsearch简介Elasticsearch复现Elasticsearch漏洞修复和加固措施 Elasticsearch未授权漏洞复现 Elasticsearch简介 Elasticsearch 是一款 Java 编写的企业级搜索服务,它以分布式多用户能力和全文搜索引擎为特…