SpringBoot 请求响应

SpringBoot 请求响应

来源于黑马程序员JavaWeb课程,总结笔记

1.ApiFox

Apifox快速入门教程

2.基本参数

简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。

//RequestController.java
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 功能:
 * 作者:兮和
 */
//原始方式

@RestController
public class RequestController {
    /*
     * Http get请求
     * @param httpUrl 连接
     * @return 响应数据
     */

    @RequestMapping("/doget")
    public String doGet(HttpServletRequest request) {
        // 获取请求参数
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println(name + ":" + age);
        return "数据响应成功";
    }

}
//测试接口

get:localhost:8080/get?name=张三&age=18

GET请求简单参数

//测试接口
POST:localhost:8080/post?name=张三&age=18

控制台打印的数据

POST请求简单参数

在进行传递参数的时候,传递的参数值必须和方法中传递的参数一一对应。

在后端程序中,如何接收传递过来的普通参数数据呢?

  • 两种方式
    • ①.原始方式
    • ②.SpringBoot方式
2.1 原始方式

在原始的Web程序当中,需要通过Servlet中提供的API:HttpServletRequest(请求对象),获取请求的相关信息。比如获取请求参数:

Tomcat接收到http请求时:把请求的相关信息封装到HttpServletRequest对象中

在Controller中,我们要想获取Request对象,可以直接在方法的形参中声明 HttpServletRequest 对象。然后就可以通过该对象来获取请求信息:

//根据指定的参数名获取请求参数的数据值
String  request.getParameter("参数名")
@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";
    }
}

@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。如果该参数是可选的,可以将required属性设置为false

**结论:**不论是GET请求还是POST请求,对于简单参数来讲,只要保证请求参数名和Controller方法中的形参名保持一致,就可以获取到请求参数中的数据值。

参数名称不一致,controller还能拿到请求参数值吗?

2.2 Java中发送HTTP请求

上述是原生的开发方式


package HTTP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 功能:
 * 作者:兮和
 * 时间: 1:42
 */
public class HttpRequestExample {
    public static void main(String[] args) {
        try {
            // 创建URL对象
            URL url = new URL("https://www.example.com");

            // 打开连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            // 设置请求方法
            connection.setRequestMethod("GET");

            // 获取响应代码
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            // 读取响应内容
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = reader.readLine()) != null) {
                response.append(inputLine);
            }
            reader.close();

            // 打印响应内容
            System.out.println("Response Content:\n" + response.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

程序执行结果

浏览器响应结果

https://developer.aliyun.com/article/1135538

非常优质的一篇关于SpringBoot项目集成Java发送Http请求(HttpClient)的博文。

3.关于请求响应

浏览器发送请求,会携带请求数据,包括:请求行、请求头;请求到达tomcat之后,tomcat会负责解析这些请求数据,然后将解析后的请求数据会传递给Servlet程序的HttpServletRequest对象,那也就意味着 HttpServletRequest 对象就可以获取到请求数据。 而Tomcat,还给Servlet程序传递了一个参数 HttpServletResponse,通过这个对象,我们就可以给浏览器设置响应数据 。

这种浏览器/服务器的架构模式呢,我们称之为:BS架构。

• BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。

3.1 响应

@ResponseBody

controller方法中的return的结果,怎么就可以响应给浏览器呢?

答案:使用@ResponseBody注解

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

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

相关文章

一线教师教学工具汇总

亲爱的教师们!我们的教学工具箱里也该更新换代啦!今天,就让我来给大家安利一波超实用的教学神器: 百度文库小程序 —— 在线图书馆 百度文库,一个宝藏级的在线文档分享平台!在这里,你可以找到海…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二)

在自动驾驶中,对车辆外界环境进行感知需要用到很多传感器的数据(Lidar,Camera,GPS/IMU),如果计算中心接收到的各传感器消息时间不统一,则会造成例如障碍物识别不准等问题。 为了对各类传感器进…

VSCode插件EditorConfig for VS Code

1. 安装 2. 配置 # http://editorconfig.orgroot true[*] # 表示所有文件适用 charset utf-8 # 设置文件字符集为 utf-8 indent_style space # 缩进风格(tab | space) indent_size 4 # 缩进大小 end_of_line lf # 控制换行类型(lf | cr | crlf) tr…

鸿蒙低代码开发一个高频问题

在版本是DevEco Studio 3.1.1 Release,SDK是3.1.0(API9)。 创建和设计的visual文件经常会遇到无法渲染的情况,或者自定义组件在Custom列表中突然不见了的情况。 有以下报错信息的: JSON schema validation error: data/visualModel/value/…

Face Forgery Detection by 3D Decomposition

文章目录 Face Forgery Detection by 3D Decomposition研究背景研究目标创新点方法提出问题研究过程技术贡献实验结果未来工作Face Forgery Detection by 3D Decomposition 会议:CVPR2021 作者: 研究背景 面部伪造引发关注传统面部伪造检测主要关注原始RGB图像

React权限管理系统实现

目录 一、需求 二、逻辑 三、实现 (一)代码 (二)解释 1. 获取权限对照数组 (queryReferencePermissionsInfo) 2. 获取处理对照数组 (queryDisposePermissionsInfo) 3. 获取权限映射表信息并处理 (queryPermissionsInfo) 4…

【分享】两种方法设置PDF“打开密码”

想要保护PDF文件的私密性,只允许特定人查看,我们可以给PDF设置“打开密码”,这样只有知道密码的人才可以打开文件。如果小伙伴们不知道如何设置,就一起看看以下两种方法吧! 方法1:使用PDF编辑器 大部分PD…

【异常检测】MVTec LOCO AD 数据集

every blog every motto: There’s only one corner of the universe you can be sure of improving, and that’s your own self. https://blog.csdn.net/weixin_39190382?spm1010.2135.3001.5343 0. 前言 MVTec LOCO AD 数据集介绍 相比MVTec AD 增加了逻辑异常 1. 正文…

【grafana】创建多变量table

这个普罗米修斯的指标啊,大多数都是键值对,而且笔者如果没记错,他这个值还必须是浮点。少数可以设成离散值(Enum),但本质还是一个带翻译功能的键值对 这样的好处是,做起来非常简单,…

Java环境配置(超详细)

Java环境配置(超详细) 引言1、安装 JDK1.1、下载安装JDK1.2、配置环境变量:JAVA_HOME1.3、将JAVA_HOME添加到Path中 2、安装 Maven2.1、下载安装Maven2.2、配置maven的环境变量: M2_HOME2.3、将Maven变量添加到Path中 引言 Java开发环境的配…

智能水位监测识别报警摄像机:保障水域安全的重要利器

随着城市化进程的加速和气候变化的影响,对水域安全的关注日益增加。为了及时监测水位变化并采取相应措施,智能水位监测识别报警摄像机应运而生。本文将介绍这一创新技术的应用和优势。 传统的水位监测方法通常依赖于传感器,但其存在着安装位置…

如何编辑pdf文件内容?3种PDF编辑方法分享

如何编辑pdf文件内容?在当今数字化时代,PDF文件因其跨平台兼容性和保持原样不变的特点,在办公、学习、生活等多个领域得到了广泛应用。然而,PDF文件的不可编辑性也让许多用户感到困扰。你是否曾经遇到过需要修改PDF文件内容&#…

java8升级到JDK21

一、版本升级 spring-boot升级到3.0以上 如果依赖了springcloud,则需要升级到对应spring-boot3.0的版本,最新依赖都是可行的。 依赖了springcloudAlibaba,则参考文档选择合适的依赖: 版本依赖关系: 文档地址&#x…

【谣传】不能完全取代HR

https://arxiv.org/pdf/2405.18113 这份研究论文提出了 MockLLM,一个利用大型语言模型(LLM)角色扮演能力来促进招聘场景中人和职位匹配的框架。它通过模拟面试过程来生成额外的匹配证据,从而提高匹配的准确性。 主要问题和挑战&am…

579页 | 工业数字孪生建模与应用(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 工业数字孪生建模与应用 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方…

【Java】---- SpringBoot 统一数据返回格式

目录 1. 统一数据返回格式介绍2. 实际应用2.1 添加前后的返回结果区别2.2 存在问题 3. 统一数据返回格式的优点 1. 统一数据返回格式介绍 通过使用ControllerAdvice和引用ResponseBodyAdvice接口来进行实现。 ResponseBodyAdvice这个接口里面有两个方法,分别是: s…

实现教育数字化转型,选择智慧校园软件

在当今数字时代,教育数字化转型已经成为不可忽视的趋势。随着技术的不断发展,智慧校园软件正日益受到教育机构的关注。那么,为什么选择智慧校园软件能够成为实现教育数字化转型的最佳解决方案呢? 首先,智慧校园软件为教…

居民社区团购小程序源码系统 拼团管理+团长管理功能 带完整的安装代拿代码包以及搭建教程

系统概述 居民社区团购小程序源码系统是一款专为社区团购打造的一站式解决方案。它整合了拼团管理和团长管理等核心功能,能够帮助企业和创业者快速搭建自己的社区团购平台,实现高效运营和便捷管理。 代码示例 系统特色功能 1.拼团管理:支持…

用友NC downCourseWare 任意文件读取漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC 系统 /portal/pt/downCourseWare…

20240606在RK3588的Android12下使用adb pull出现权限问题Permission denied

adb root adb remount 20240606在RK3588的Android12下使用adb pull出现权限问题Permission denied 2024/6/6 11:48 缘起:想从Toybrick的TB-RK3588的Android12开发板上通过adb pull获取刚刚生成的edid.bin,老是报告权限问题。 百度:adb: error…