JavaWeb HTTP 请求头、请求体、响应头、响应体、响应状态码

J2EE(Java 2 Platform Enterprise Edition)是指“Java 2企业版”,B/S模式开发Web应用就是J2EE最核心的功能。

Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。

在日常的生活中,经常会使用浏览器去访问百度、京东等这些网站,这些网站统称为Web网站。

软件架构

桌面应用

桌面应用俗称单击应用,软件所有数据都保存在电脑的本地硬盘中

  • 优点: 易于使用,结构简单
  • 缺点: 数据难以共享,安全性差,更新不及时

C/S:Client-Server模式

Client/Server结构(C/S结构)是指客户端和服务器结构,在用户本地有一个客户端程序,在远程有一个服务器端程序

  • 优点: 数据方便共享,安全性高
  • 缺点: 必须安装客户端,升级与维护困难

B/S:Broswer-Server模式

Broswer-Server(B/S)模式即浏览器和服务器架构模式,只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序。

  • 优点:开发简单,无需安装客户端,数据易于共享
  • 缺点:相较于C/S模式,执行速度与用户体验相对较弱,对硬件要求过高

客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。

在这里插入图片描述

请求与响应

  • 从浏览器发出送给服务器的数据包称为“请求(Request)”
  • 从服务器返回给浏览器的结果称为“响应(Response)”

在这里插入图片描述

资源分类

静态资源

使用静态网页开发技术发布的资源

  • 所有用户访问,得到的结果是一样的。如:文本,图片,音频、视频, HTML,CSS,JavaScript
  • 如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器。
  • 浏览器中内置了静态资源的解析引擎,可以展示静态资源

动态资源

使用动态网页及时发布的资源

  • 所有用户访问,得到的结果可能不一样。如:jsp/servlet,php,asp…
  • 如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器

HTTP

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

  • 数据传输的规则指的是请求数据和响应数据需要按照指定的格式进行传输。
  • 如果想知道具体的格式,可以打开浏览器,点击F12打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容。

HTTP协议特点

  • 基于TCP协议: 面向连接,安全

TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。

  • 基于请求-响应模型的: 一次请求对应一次响应

请求和响应是一一对应关系

  • HTTP协议是无状态协议: 对于事物处理没有记忆能力。每次请求-响应都是独立的

无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。这种特性有优点也有缺点,缺点:多次请求间不能共享数据优点:速度快

请求数据格式

请求数据总共分为三部分内容,分别是请求行请求头请求体

在这里插入图片描述

请求行

HTTP请求中的第一行数据,请求行包含三块内容,分别是GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本],请求方式有七种,最常用的是GETPOST

请求头

第二行开始,格式为key: value形式,请求头中会包含若干个属性,常见的HTTP请求头有:

Host:表示请求的主机名
User-Agent:浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
请求体

POST请求的最后一部分,存储请求参数

在这里插入图片描述

如上图红线框的内容就是请求体的内容,请求体和请求头之间是有一个空行隔开。此时浏览器发送的是POST请求。

  • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中。
  • GET请求请求参数大小有限制,POST没有。

响应数据格式

响应数据总共分为三部分内容,分别是响应行响应头响应体

在这里插入图片描述

响应行

响应数据的第一行,响应行包含三块内容,分别是HTTP/1.1[HTTP协议及版本]200[响应状态码]ok[状态码的描述]

响应头

第二行开始,格式为key:value形式,响应头中会包含若干个属性,常见的HTTP响应头有:

Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
Content-Length:表示该响应内容的长度(字节数);
Content-Encoding:表示该响应压缩算法,例如gzip;
Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
响应体

最后一部分。存放响应数据。

响应状态码

状态码大全:https://cloud.tencent.com/developer/chapter/13553

分类说明
1xx响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx成功——表示请求已经被成功接收,处理已完成
3xx重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
常用状态码
状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用
431Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好
511Network Authentication Required客户端需要进行身份验证才能获得网络访问权限

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

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

相关文章

LabVIEW流量控制系统

LabVIEW流量控制系统 为响应水下航行体操纵舵翼环量控制技术的试验研究需求,通过LabVIEW开发了一套小量程流量控制系统。该系统能够满足特定流量控制范围及精度要求,展现了其在实验研究中的经济性、可靠性和实用性,具有良好的推广价值。 项…

HS6621Cx 一款低功耗蓝牙SoC芯片 应用于键盘、鼠标和遥控器消费类产品

HS6621Cx是一款功耗优化的真正片上系统 (SOC)解决方案,适用于低功耗蓝牙和专有2.4GHz应用。它集成了高性能、低功耗射频收发器,具有蓝牙基带和丰富的外设IO扩展。HS6621Cx还集成了电源管理功能,可提供高效的电源管理。它面向2.4GHz蓝牙低功耗…

VSCode通过SSH连接Docker环境进行开发

文章目录 VSCode 插件Docker 镜像构建镜像部署环境 VSCode 连接本地Docker容器VSCode SSH连接Docker容器VSCode 打开容器内目录文件 VSCode 插件 Remote - SSH Docker 镜像 https://hub.docker.com/_/golang # Golang 镜像 docker pull golang:1.22构建镜像 Dockerfile F…

AGI概念与实现

AGI AGI(Artificial General Intelligence),中文名为“通用人工智能”或“强人工智能”,是指通过机器学习和数据分析等技术,使计算机具有类似于人类的认知和学习能力的技术. 多模态的大模型 (Multimodal…

什么是数据同步利器DataX,如何使用?

什么是 Datax? DataX 是阿里云 DataWorks数据集成 的开源版本,使用Java 语言编写,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、Ma…

店匠科技颁布 Shoplazza Awards:品牌出海迎历史性机遇,赋能品牌腾飞

在全球化的今天,中国品牌在全球市场的地位日益显著,品牌意识的提升推动了企业出海战略的全新转型。以全球电商市场发展为例,根据 ecommerceBD 数据,2023 年全球零售电子商务销售额预计 6.3 万亿美元,到 2026 年&#x…

旧的Spring Security OAuth已停止维护,全面拥抱新解决方案Spring SAS

Spring Authorization Server 替换 Shiro 指引 背景 Spring 团队正式宣布 Spring Security OAuth 停止维护,该项目将不会再进行任何的迭代 目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用作为 SpringBoot 3.0 的最新…

AVT Prosilica GC Vision Cameras 相机视觉说明使用安装。具体详情内容可参看PDF目录内容。

AVT Prosilica GC Vision Cameras 相机视觉说明使用安装。具体详情内容可参看PDF目录内容。

AcWing 1231. 航班时间 解题思路及代码

先贴个题目: 以及原题链接: 1231. 航班时间 - AcWing题库https://www.acwing.com/problem/content/1233/ 讲下思路吧,这题我不会做(直球)这也是这题其实算是很简单的题出现在我的题解的原因,作为一个重度网…

设计模式-结构型模式-外观模式

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 首先,定义子系统的各个组件接口和具体实现类: // 子系统组件接…

小型主机的终点不是itx主机,惠普800g15700G

2020年初疫情刚开始的时候,我就开始关注ITX主机。 后来玩HP 800g1 DM,现在用800g1 USDT作为我的第二台机器。 一路走来,我感觉小主机的终点不是itx主机(DIY),而是小主机的成品STX版本。 直到有一天看到B站U…

C语言基础(四)——函数

六、函数 6.1 函数的声明与定义—嵌套调用 6.1.1 函数的声明与定义 函数间的调用关系是,由主函数调用其他函数,其他函数也可以互相调用,同一个函数可以背一个或多个函数调用任意次。 下例中有两个c文件, func.c是子函数printstar和print_me…