springboot-前后端分离——第一篇

本篇主要对前后端分离的一些基础知识进行总结,主要对HTTP请求协议、HTTP响应格式、Http协议解析等进行总结。重点在于简单了解前端如何向服务端发送请求,服务端如何接收请求并返回响应结果。

一、简单案例:

首先创建一个springboot项目(注意创建项目时要勾选web依赖),整体结构如下:

在HelloController类中编写如下代码,来接收请求,@RestController注解以及@RequestMapping后续会详细讲解。下面代码中有简单的注释:

package com.webs.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;//请求处理类:加上下面restcontroller注解之后才是一个请求处理类;
@RestController
public class HelloController {@RequestMapping("/hello")//这里添加上之后才知道处理的是哪一个请求,这里请求的是/hello,浏览器请求这个之后就会调用下面的代码;public String hello(){System.out.println("hello world");return "hello world!";}}

其中SpringbootWebStudyApplication.java这个类是启动类,运行启动类之后会显示如下结果:可以看到下面端口号8080,然后在网页中输入对应的ip地址以及端口号,就可以请求这个/hello,执行请求处理类的方法,然后得到请求结果.

然后在浏览器中输入以下地址,可得到响应结果:

整个流程就是首先客户端发送请求/hello,然后服务端接收这个请求并return “hello world”返回给前端结果,这样前端页面就会得到hello world!

完成这个简单案例肯定会有很多疑问,前端与服务端之间如何进行数据解析的,HTTP请求数据格式是什么以及HTTP响应格式是什么...下面开始对前后端之间的联系进行简单介绍:

二、HTTP协议:

HTTP协议:

概念:

超文本传输协议,规定了浏览器和服务器之间的数据传输规则。

特点:

  • 基于TCP协议:面向连接,安全。
  • 基于请求-响应模型:一次请求对应一次响应
  • HTTP协议是无状态的协议:对于事务处理没有记忆能力,每次请求-响应都是独立的。

缺点:

多次请求之间不能共享数据。

优点:

速度快。

浏览器请求服务器并把数据发送给服务器,然后服务器要解析请求数据,如何解析呢,就要按照Http协议进行解析,同样服务器发送给前端响应数据也按照http协议进行解析;

HTTP 协议基本工作流程

HTTP 协议基本工作流程,就是“请求 - 应答”“一发一收”的模式。

在这个过程中参与请求和应答的是服务器端、客户端、http 协议本身。

HTTP请求:

HTTP-请求数据格式:

请求方式为Get:

GET /brand/findAll?name=OPPO&status=1 HTTP/1.1

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*

Accept-Encoding:gzip,deflate,br

Accept-Language:zh-CN,zh;q=0.9

Host:localhost:8080

User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;×64)AppleWebkit/537.36(KHTML,like Gecko)Chrome/.

请求方式为Post :

POST /brand HTTP/1.1

Accept:application/json,text/plain,*/*

Accept-Encoding:gzip,deflate,br

Accept-Language:zh-CN,zh;q=0.9

Content-Length:161

Content-Type:application/json;charset=UTF-8

Cookie:Idea-8296eb32=841b16f0-0cfe-495a-9cc9-d5aaa71501a6;JSESSIONID=OFDE4E430876BD9C5C955F061207386F

Host:localhost:8080

User-Agent:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/.

{"status":1,"brandName":"javaweb","id":"","description":"前后端分离"}

上面两个请求方式中,第一行是请求方式:get和post,后面是资源路径,再后面就是协议以及对应的版本;但是Get请求中间有数据,这些是请求参数。

第二行以下是请求头,key:value格式的;

post请求最后一行是请求体,存放请求参数;get请求中的请求参数是放在请求行中的也就是第一行,在资源路径后面key=value&key=value...的方式,没有请求体;get请求大小有限制,post请求没有大小限制;

可以看到下图案例中请求头中显示为Get请求:

 HTTP响应:

浏览器发送请求信息后,然后服务器解析,解析后将响应信息发送给浏览器;

http响应格式:

HTTP/1.1200 OK

Content-Type:application/json

Transfer-Encoding:chunked

Date:Tue,10 May 202207:51:07 GMT

Keep-Alive:timeout=60

Connection:keep-alive

[{id:1,GameName:“王者荣耀”,PeopleName:“:“东方曜”}]

响应行:响应数据第一行(协议、状态码、描述)

响应头:第二行开始,格式key:value

响应体:最后一部分,存放响应数据

 常见的响应状态码:

 HTTP协议解析:

Web服务器:

    Web服务器是是一个软件程序,对HTTP协议的操作进行封装,使程序员不必直接对协议进行操作,让Web开发更加便捷,主要功能是提供网上信息浏览服务。

    java网络编程就是服务器与客户端之间的数据解析,但是这种方式代码量很多,因此推出了web服务器tomcat,直接将解析代码封装起来,可以直接用;并且可以将项目部署到web服务器上,对外提供网上信息浏览服务;

tomcat:

    tomcat是⼀个Http服务器(能够接收并且处理http请求,所以tomcat是⼀个http服务器)
我们使⽤浏览器向某⼀个⽹站发起请求,发出的是Http请求,那么在远程,Http服务器接收到这个请求之后,会调⽤具体的程序(Java类)进⾏处理,往往不同的请求由不同的Java类完成处理。

 注意:springboot中内置了tomcat,并且springboot项目都是运行在内嵌的tomcat中的,web程序的话需要部署在外部的tomcat服务器中运行。

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

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

相关文章

异步任务的一些思考

前言 XXL-Job部署教程 项目中,必然少不了数据的导入导出,针对数据的导入导出简单复盘一下。 为了不占用资源消耗时间,影响用户体验,大量数据的导入导出一般都是异步执行 导入的时候,如果数据量很大,一次…

八神庵:性格冲突与个性魅力在《拳皇》中的深度解读

在SNK的著名格斗游戏系列《The King Of Fighters》(拳皇)中,八神庵是一位极具代表性和复杂性的角色。他的性格特征不仅塑造了其独特的个人魅力,而且也成为了剧情发展的重要推动力。本文旨在探讨八神庵的性格特点及其在游戏内外所展…

Wireshark网络协议分析 - TCP协议

在我的博客阅读本文 文章目录 1. 基础2. 实战2.1. 用Go写一个简单的TCP服务器与客户端2.2. Wireshark抓包分析2.3. 限制数据包的大小——MSS与MTU2.4. 保证TCP的有序传输——Seq,Len与Ack2.5. TCP头标志位——URG,ACK,PSH,RST&…

cleanmymacX有必要买吗

CleanMyMac X是一款被广泛推荐的Mac电脑清理软件。以下是关于是否购买CleanMyMac X的几个关键点: 软件功能:CleanMyMac X具备多项功能,包括但不限于系统垃圾清理、缓存清理、恶意软件移除、隐私保护等。这些功能有助于保持Mac电脑的清洁和性能…

StarRocks -- 基础概念(数据模型及分区分桶)

1. 数据模型 StarRocks提供四种数据模型: Duplicate Key, Aggregate Key, Unique Key, Primary Key 1.1 Duplicate Key 适用场景: 分析原始数据,如原始日志和原始操作记录。可以使用多种方法查询数据,不受预聚合方法的限制。加…

第七篇:node中间件详解

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 📘 引言: &#…

【Opcua】 客户端读写时,Opcua Server信息返回处追溯(1)

【Opcua】 客户端读写时,Opcua Server信息返回处追溯(1) 前言从客户端角度展开分析从服务端角度展开分析 前言 基于前文【Node-RED】node-red-contrib-opcua-server模块使用(2)介绍,我们已经了解到NodeRed…

【EI会议征稿通知】第四届信号图像处理与通信国际学术会议(ICSIPC 2024)

第四届信号图像处理与通信国际学术会议(ICSIPC 2024) 2024 4th International Conference on Signal Image Processing and Communication 第四届信号图像处理与通信国际学术会议(ICSIPC2024)将于2024年5月17日-19日在陕西西安再…

测试面试题(0101设计测试用例关键)

1. 测试计划 测试范围,本次改动的模块,新增了哪些功能测试策略,包含测试依据,测试准入标准,准出标准,测试重点及方法(确认功能的优先级),测试工具的选择测试管理&#x…

MySQL进阶之存储过程(变量)

存储过程 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就…

用友NC Cloud及YonBIP PMCloudDriveProjectStateServlet JNDI注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【伪类·HTML】

伪类 在 CSS 中,伪类是添加到选择器的关键字,给指定元素设置一些特殊状态,以 : 开头。 链接有以下四个状态。这四种状态也称之为超链接的伪类。 对于超链接的伪类,推荐的使用顺序是: :link - :visited - :hover - :a…

C++ STL库之Vector简介及例题(哈希表)(一)

文章目录 C STL库之Vector简介及例题(哈希表)(一)一、初始化二、数值操作例题题解哈希表简析C哈希表初始化C哈希表基本操作 C STL库之Vector简介及例题(哈希表)(一) Vector是一个能…

代码随想录刷题笔记-Day15

1. 完全二叉树的的节点个数 222. 完全二叉树的节点个数https://leetcode.cn/problems/count-complete-tree-nodes/ 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没…

幻兽帕鲁服务器多少钱?幻兽帕鲁服务器价格,2月最新

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…

Spring Boot 中使用 Spring MVC基础

Spring MVC基础 一、控制器 controller1.定制控制器的方法(1)接收请求(2)接收请求参数(3)返回值 二、模型 Modle三、视图 View四、总结 Spring MVC 是非常著名的 Web 应用框架,现在的大多数 Web…

动态规划入门题目

动态规划(记忆化搜索): 将给定问题划分成若干子问题,直到子问题可以被直接解决。然后把子问题的答保存下来以免重复计算,然后根据子问题反推出原问题解的方法 动态规划也称为递推(暴力深搜记忆中间状态结果…

MySQL-运算符

文章目录 1. 运算符概述2. 算术运算符3. 比较运算符4. 逻辑运算符5. 位运算符 1. 运算符概述 在 MySQL 中,可以通过运算符来获取表结构以外的另一种数据。MySQL 所提供的运算符可以直接对表中数据或字段进行运算,进而实现用户的新需求,增强了…

【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)

前言:在上一篇我们对于C中类和对象有了一个初步的了解,今天我们将进一步的学习,今天我们目标是对构造函数、析构函数、拷贝构造函数进行一个初步学习在后面也会进一步的学习,一起加油呐! 💖 博主CSDN主页:卫…

幻兽帕鲁服务器多少钱——幻兽帕鲁服务器价格介绍

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…