SpringBoot 请求响应

news2024/12/28 5:43:05

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注解

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

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

相关文章

Qt for Android 申请摄像头权限

步骤 1. 添加用户权限 AndroidManifest.xml 中新增&#xff08;不添加后面申请选项时不弹窗&#xff09; 或者再Qt Creator中直接添加 2. Qt代码申请权限 Qt自己封装好了一些常用的权限申请&#xff0c; 详情Qt Assistant文档搜索 QPermission查看 #include <QPermi…

层出不穷的大模型产品如何选

目录 1.概述 2.使用体验分享 2.1.功能情况 2.2.内容生成质量 2.3.隐私安全性 2.4.小结 3.独特优势和倾向选择 4.未来发展方向 4.1.技术创新 4.2.可持续可扩展性 4.3.用户体验 4.4.应用场景 4.5.政府赋能 4.6.小结 1.概述 目前市面上的大模型AIGC产品有很多&#…

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结&#xff1a; 最近做的期货价格泡沫中&#xff0c;一直在说&#xff0c;momentum&#xff0c;momentum&#xff0c;momentum&#xff0c;那么究竟什么是momentum呢&#xff1f; 目前&#xff0c;在有关期货价格泡沫的研究文献中&#xff0c;一般都是研究…

创新科技,船舶岸电电源助力环保事业

岸电电源&#xff0c;也称为岸用变频电源或电子静止式岸电电源&#xff0c;是一种特别设计制造的大功率变频电源设备。这种设备主要针对船上、岸边码头等高温、高湿、高腐蚀性、大负荷冲击等恶劣使用环境&#xff0c;能够提供稳定的电源供应。它通常用于将岸边的工业用电&#…

蓝卓热电行业解决方案

能源是人类社会发展过程中的永恒话题,热电联产作为电能和热能同时生产的能源利用形式,相较传统的火力发电具有能源利用效率高等优点,可以高效解决能源及环境问题。目前&#xff0c;世界各国都将热电联产作为更高效、更环保的能源供给体系而有效措施大力推广。 如何降本增效、减…

root账号,cmd命令行能用ssh连上服务器,但是vscode连接报错Permission denied,please try again

☆ 问题描述 但是cmd能连接上 ★ 解决方案 点击 然后add到自己的配置文件下 重新选择 这个时候就会出现刚刚添加的&#xff0c;点击选择 输入密码 然后就ok了 ✅ 总结 只能说&#xff1a;玄学&#xff01;

工业互联网基本概念及关键技术(295页PPT)

资料介绍&#xff1a; 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通&#xff0c;从而提高效率&#xff0c;推动整个制造服务体系智能化。同时&#xff0c;工…

iLogtail 2.0 重大升级,端上支持 SPL

作者&#xff1a;太业 流式处理语言发展 早期流式处理概念&#xff1a; 20 世纪 70 年代&#xff0c;编程语言如 APL 提供了对数组的流式操作&#xff0c;这可以看作是流式处理语法的早期形式。管道&#xff08;Pipes&#xff09;概念在 UNIX 系统中的引进使得可以通过命令行将…

【机器学习】必会降维算法之:独立成分分析(ICA)

独立成分分析&#xff08;ICA&#xff09; 1、引言2、独立成分分析&#xff08;ICA&#xff09;2.0 引言2.1 定义2.2 应用场景2.3 核心原理2.4 实现方式2.5 算法公式2.6 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;最近胡塞武装很哇塞啊。 小鱼&#xff1a;…

【面试八股总结】死锁:产生条件、预防死锁、处理死锁、避免死锁

一、什么是死锁&#xff1f; 死锁是指两个&#xff08;或多个&#xff09;线程互相等待对方数据的过程&#xff0c;死锁的产生导致程序卡死&#xff0c;不解锁程序将永远⽆法进⾏下 去 二、死锁产生条件 死锁只有同时满足以下四个条件才会发生&#xff1a;互斥条件&#xff1b…

基于飞腾 D2000 8 核+ 32G DDR+板载 6 千兆电口+ 4 千兆光口高性能网络安全主板

第一章、产品介绍 1.1 产品概述 XM-D2000GW是一款基于飞腾 D2000 8 核X100 桥片高性能网络安全主板&#xff0c;D2000 为飞腾首款支持 8 核桌面平 台处理器&#xff0c;支持双通道 DDR4-2666 内存&#xff0c;芯片内置国密 SM2/SM3/SM4/SM9 加速引擎&#xff0c;支持单精度、双…

oracle 打补丁遇到 check “CheckActiveFilesAndExecutables“ failed报错处理方法

该报错是因为打补丁的时候停止集群没有停止干净进程导致的 问题 处理方法 强制停止打补丁所在节点集群服务 查看grid和oracle相关进程是否停止干净&#xff0c;发现有未关闭的进程手动kill 处理完毕继续打补丁即可

终于搞懂了!原来vue3中template使用ref无需.value是因为这个

前言 众所周知&#xff0c;vue3的template中使用ref变量无需使用.value。还可以在事件处理器中进行赋值操作时&#xff0c;无需使用.value就可以直接修改ref变量的值&#xff0c;比如&#xff1a;<button click"msg Hello Vue3">change msg</button>。…

探索UWB模块的多功能应用——UWB技术赋能智慧生活

超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术&#xff0c;凭借其高精度、低功耗和强抗干扰能力&#xff0c;正在成为智能家居领域的一项关键技术。UWB模块的应用不仅提高了智能家居设备的性能&#xff0c;还为家庭安全、设备管理和用户体验带来了显著的改善。 UWB模…

【JS实战02】轮播图

一&#xff1a;HTML页面结构 1 整体外观 2 HTML结构以及CSS样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【微信小程序】配置

全局配置 window 节点常用配置&#xff1a; tabbar 在小程序中分为 顶部 tabbar 和 底部 tabbar。 tabbar 最少配置两个&#xff0c;最多配置五个。当渲染顶部 rabbar 时&#xff0c;不显示 icon&#xff0c;只显示文本。 tabbar 节点配置&#xff1a; 每个 tab 项的配置&…

String常用操作

String常用方法 构造字符串 常用的构造字符串有3种&#xff1a; 1.直接赋值String s "abcd"; 2.实例化调用构造方法String s new String("abcd"); 3.实例化传字符数组 char[] ch {a,b,c,d}; String s new String(ch);字符串比较 比较 比较的是两个…

odoo16 档案管理

档案管理&#xff0c;odoo15升级至odoo16完善 电子档案管理是指将传统纸质档案数字化&#xff0c;以便更加方便、快捷、安全地进行档案管理。电子档案管理系统可以对档案进行数字化、存储、检索、共享、传递和销毁等操作&#xff0c;从而提高了档案管理的效率和准确性&#xf…

剪画小程序:自媒体必备神器:【视频翻译】自动识别语言、翻译、配音,让外语视频秒变母语!

Hello&#xff0c;大家好呀&#xff01;我是不会画画的小画~ 今天给大家带来一款敲实用的视频翻译工具一一 小程序【剪画】 我们有很小伙伴在学习他国语言时&#xff0c;最大的障碍就是语言的问题了&#xff0c;想要 理解其中的内容&#xff0c;在这之前要下很大的功夫去掌握…

Python语法详解module3(组合数据类型列表、元组、字典、集合详细用法)

目录 一、列表列表的创建多维列表列表的访问和修改列表的添加和删除列表的遍历使用 for 循环遍历使用 while 循环遍历同时遍历索引和元素列表推导式 常用的列表函数len()sort()reverse()index()count()extend()clear() 二、元组创建元组访问元组元素元组的不可变性元组的优点元…