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封装类里面的相关方法,并把需要响应的值传入这些方法,这样前端收到的响应结果就是规范化的。

服务端代码如下:

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

 

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

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

相关文章

Chrome历史版本下载地址:Google Chrome Older Versions Download (Windows, Linux Mac)

最近升级到最新版本Chrome后发现页面居然显示错乱,是在无语, 打算退回原来的版本, 又发现官方只提供最新的版本下载, 为了解决这个问题所有收集了Chrome历史版本的下载地址分享给大家. Google Chrome Windows version 32-bit VersionSizeDate104.0.5112.10279.68 MB2022-05-30…

day03vue学习

day03 一、今日目标 1.生命周期 生命周期介绍生命周期的四个阶段生命周期钩子声明周期案例 2.综合案例-小黑记账清单 列表渲染添加/删除饼图渲染 3.工程化开发入门 工程化开发和脚手架项目运行流程组件化组件注册 4.综合案例-小兔仙首页 拆分模块-局部注册结构样式完善…

【开源】SpringBoot框架开发学生综合素质评价系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生功能2.2 教师功能2.3 教务处功能 三、系统展示四、核心代码4.1 查询我的学科竞赛4.2 保存单个问卷4.3 根据类型查询学生问卷4.4 填写语数外评价4.5 填写品德自评问卷分 五、免责说明 一、摘要 1.1 项目介绍 基于J…

DOcker搭建Rancher

简介 Rancher 是供采用容器的团队使用的完整软件堆栈。它解决了管理多个Kubernetes集群的运营和安全挑战,并为DevOps团队提供用于运行容器化工作负载的集成工具。 官网地址:https://www.rancher.cn/ 安装 拉取镜像 docker pull rancher/rancher:stab…

CSS元素定位(学习笔记)

一、 z-index 1.1 作用 规定元素的堆叠顺序,取值越大,层级越往上 1.2 属性值 属性值为数字,可以取负值,不推荐 默认值:auto(跟父元素同一层级) 1.3 注意 必须配合定位(static除外)使用,默认情况下,后面的元…

Tomcat Session ID---会话保持

简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…

力扣-1351 统计有序矩阵中的负数

给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非严格递减顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输出:8 解释&…

Unity UGUI之Toggle基本了解

在Unity中,Toggle一般用于两种状态之间的切换,通常用于开关或复选框等功能。 它的基本属性如图: 其中, Interactable(可交互):指示Toggle是否可以与用户交互。设置为false时,禁用To…

敏捷开发——elementUI/Vue使用/服务器部署

1. 创建vue项目 2. 安装element-ui组件库 npm i -S element-ui或 npm install element-ui3. 在main.js中导入element-ui组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI)4. 运行 npm run serve后可以使用 ctrc终止进…

房产销售平台|基于Spring cloud+ Mysql+Java+ Tomcat的房产销售平台设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

九宫格日志网站|基于JSP技术+ Mysql+Java+ B/S结构的九宫格日志网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

Flutter-仿淘宝京东录音识别图标效果

效果 需求 弹起键盘,录制按钮紧挨着输入框收起键盘,录制按钮回到初始位置 实现 第一步:监听键盘弹起并获取键盘高度第二步:根据键盘高度,录制按钮高度计算偏移高度,并动画移动第三步:键盘收起…