javaweb入门(3)-- 详细了解http协议1

黑马JavaWeb开发笔记13——Springboot入门(创建、运行&测试项目)、Http协议(请求&响应协议)、HTTP协议解析 本篇文章是2023年最新黑马JavaWeb开发笔记13:Springboot入门(创建、运行&测试项目)、Http协议(GET, POST, 响应协议)、HTTP协议解析的总结,帮助需要学习Web开发的朋友温故而知新。 阅读详情
http协议:超文本传送协议
http协议用于定义客户端与web服务器进行通讯的格式 ,换一种说法就是:用两人约定好话来交流。
http协议是tcp/ip的应用层协议。

学习javaEE,务必要深刻了解http协议,对以后的web开发起着巨大的作用,而且在以后的学习中,还可以对javaEE所封装的一些方法一点就通,所以掌握了http协议,是再基础不过的要求。

当我们使用浏览器访问某个网站时,浏览器是如何从web服务器那获得数据并显示给用户呢?其实,当我们去访问某个web资源时,浏览器会发送一个http请求到web服务器,而web服务器收到http请求之后,会读取相关的资源,并且反回一个http响应将数据传递给浏览器。下面,就来详细了解一下http协议的http请求与http响应。

通过httpwatch工具,获取浏览器访问百度时http请求的数据:
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; KB974487)
Accept-Encoding: gzip, deflate
Host: www.baidu.com
Connection: Keep-Alive

上述为一个Http请求:  
     GET / HTTP/1.1  代表一个请求头,GET为请求方式, /  是请求的资源路径   HTTP/1.1是协议的版本
     Accept: text/html.....
     ......
     Connection:keep-Alive  中间这一段代表多个请求行,请求行中包含着要请求的主机名,支持的压缩格式等等。
     一个空行(空行也是数据的一部分)
     请求的实体数据(当有数据要交给web服务器时)

了解了HTTP协议的格式,我们可以尝试依照这样的格式,用最最简单的方式来访问一个web资源。
import java.io.*;
import java.net.*;
public class HttpTest{
	public static void main(String args[]) throws Exception{
		//连接百度服务器
		InetAddress inet = InetAddress.getByName("www.baidu.com");
		Socket s = new Socket(inet, 80);
		
		//获取输出流,并输出HTTP协议
		OutputStream out = s.getOutputStream();

		out.write("GET / HTTP/1.1\r\n".getBytes());	         //请求头
		out.write("Host: www.baidu.com\r\n".getBytes());     //请求行
		out.write("Connection:close\r\n".getBytes());
		out.write("\r\n".getBytes());                        //一个空行,必须的
		out.write("\r\n".getBytes());
		out.flush();
		
		//用输入流接收百度服务器返回的数据,写到html文件中。
		InputStream in = s.getInputStream();
		FileOutputStream outt = new FileOutputStream(new File("D:\\baidu.html"));
		
		byte[] buf = new byte[1024];
		int len =0;
		while((len=in.read(buf))!=-1){
			outt.write(buf, 0, len);
		}
		System.out.println("OK");
	}
}

编译运行上面的java类之后,到D盘打开输出文件baidu.html,打开之后可以发现,我们也可以拿到百度服务器所传递给我们的数据。
如下图:


从上图又可以看出,有一部分内容与我们平时看到的页面有所不同,页面中多了一些信息:
HTTP/1.1 200 OK Date: Fri, 22 Mar 2013 12:33:50 GMT Server: BWS/1.0 Content-Length: 10299 Content-Type: text/html;charset=utf-8 Cache-Control: private Expires: Fri, 22 Mar 2013 12:33:50 GMT Set-Cookie: H_PS_PSSID=2071_2098_1442_1945_1788; path=/; domain=.baidu.com Set-Cookie: BAIDUID=158B13884EC5E243393D01AF6C80A5A8:FG=1; expires=Fri, 22-Mar-43 12:33:50 GMT; path=/; domain=.baidu.com P3P: CP=" OTI DSP COR IVA OUR IND COM " Connection: Close

这些又是什么呢?又为什么会出现呢?
这些信息,其实就是http响应,通过http响应,服务器就可以告知浏览器,服务器的基本信息以及浏览器要如何处理这些数据。
通常浏览器获得服务器的http响应之后,浏览器解析这些数据之后显示给用户正常的网页页面,而刚才我们是将所有数据直接写到baidu.html文件当中,所以页面上会多了这些信息。

HTTP响应:
格式:
     HTTP/1.1 200 OK  这是一个状态行
     Content-Length:10299
     ......
     Content-Type:text/html;charset=utf-8   这些是多个消息头
     一个空行(也是数据的一部分)   
     实体内容。

通过上述的例子,可以基本了解http请求与http响应,至于http协议常用的请求行与消息头,请听下回分解。




【JavaWeb】速通HTTP协议 1. 简述HTTP全称:超文本传输协议。是一个应用层协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统HTTP规定了客户端与服务器之间进行数据传输的规则。客户端与服务端通信时传输的内容称之为报文。而HTTP就规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式实际上要学习的就是这两种报文:①客户端发送给服务器的称为"请求报文②服务器发送给客户端的称为"响应报文"正式由于HTTP。 阅读详情

相关推荐

HTTP协议详细解读

端口号的主要作用是表示一台计算机中特定的进程所提供的服务,即用来区分一个主机上的不同程序,每个程序在访问网络时,都会关联一个或者多个端口号,通过端口号区分当前的请求给谁,端口号也可以省略,此时浏览器根据协议的类型自动决定使用哪个端口号。例如http协议默认使用80端口。HTTP协议每次请求和响应都是独立的,客户端发送HTTP请求到服务端后,服务端根据请求响应数据,响应完成后不会记录任何信息,这样的方式具有速度快的优点,但是其导致的问题就是多次请求之间不能共享数据,Java使用会话技术解决这个问题。

zhangxia_的博客 5165

爬虫逆向实战(20)-某99网站登录(魔改md5、图片验证码)

请求第二个接口获取到图片验证码的地址,请求该地址获取到图片,破解图片验证码(我使用的是打码平台)。生成加密参数,携带加密参数以及图片验证码请求登录接口。的加密方法,发现是加盐的md5,通过控制台测试字符串’1’,可以看出时标准的md5。但是当我使用标准的md5加密加盐后的字符串时,却发现与网站加密出的密文不同。通过观察这三个请求可以发现,第二个请求会携带第一个请求返回响应中的。通过定位到的加密位置,扣出加密代码,缺啥补啥即可。,第二个请求返回的响应中有第三个请求的地址。是可以写死的,每次生成的都是一样的。

qq_44906798的博客 3万+

JavaWeb系列八: WEB 开发通信协议(HTTP协议)

JavaWeb系列八: WEB 开发通信协议-HTTP协议

你好, 我在学java的博客 961

http协议解析 java_史上最通俗易懂HTTP协议解析

一.HTTP简介5 d* ~2 I) q: f* C4 {) e- _# b7 a" n: d' [6 Q# ]% G) ^1.HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。& K2 f: h) J2 R2....

weixin_39890708的博客 4008

电源完整性必看!用SIwave提取PDN阻抗曲线的3个关键设置与常见报错解决

本文深入探讨了在SIwave中进行电源完整性(PI)仿真时,提取PDN阻抗曲线的三个核心设置要点。重点解析了端口阻抗设为0.1欧姆的物理意义与SYZ参数仿真中的阻抗匹配原则,并提供了针对常见收敛性问题和模型误差的实战排查思路,旨在帮助工程师获得更精确可靠的仿真结果,为去耦电容优化提供依据。

b9c0d的博客 352

InsightFace实战:如何在树莓派上部署轻量级人脸识别系统(附完整代码)

本文详细介绍了如何在树莓派上部署基于InsightFace框架的轻量级人脸识别系统。通过硬件选型、环境配置、模型优化(如MobileFaceNet)及完整代码实战,指导开发者构建本地化、低功耗的智能应用,如智能门铃,并提供了性能调优与系统服务化的进阶技巧。

weixin_29043895的博客 351

java http content_Java实现http协议解析

[java]代码库下面的代码片断创建一个与本地HTTP服务器(127.0.0.1代表本地主机的IP地址)通信的Socket,发送一个HTTP请求包,准备接收服务器的应答。Socket socket = new Socket("127.0.0.1", "80");OutputStream os = socket.getOutputStream();InputStream ins = soc...

weixin_36085895的博客 332

MacOS多次踩坑后成功安装Homebrew

来一次性成功安装Homebrew吧 官网提供的安装脚本无法成功安装Homebrew,原因大家都懂的,故采用脚本安装的方式。 下载homebrew的安装脚本brew_install 在Download路径下执行如下脚本 curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install 修改brew_install脚本 修改brew_install脚本。如果你的脚本打开之后是如下

weixin_41847116的博客 1983

N1 HTTP请求响应报文笔记

概述 Web浏览器,服务器和相关的Web应用程序都是通过HTTP进行相互通信的。HTTP是现代全球因特网中使用的公共语音。(嗯,就像全世界都学东北话。手动滑稽)。 HTTP(HyperText Transfer Protocol,超文本传输协议) 是访问万维网使用的核心协议,也是我们日常看各种网页时由浏览器向Web服务器发送的资源请求。 HTTP是使用有状态的TCP协议作为它的传输机制,但每次的请...

尐猴子君ii的博客 2148

基准电压 + 运放 + 低边MOS恒流源控制原理

因为恒流源强制 Iout不变,而 Vin​ 增加时,负载压降 Iout⋅Rload不变,多余的电压只能由MOS管的 VDS承担,因此 VDS必然增加。在饱和区,MOS 管的 ID 仅由 VGS决定,与 VDS 无关,这样,负载变化时,VDS可自由调整以维持 Iout恒定。当 Vin​ 小到无法满足 VDS>VGS−Vth时,MOS管进入线性区,Iout 会随 Vin​ 下降而减小,恒流失效。由于 Vref和 Rsense未变,Iout无需调整,运放无需动作,OUT保持不变,Iout恒定。

weixin_50643237的博客 2655

从Canny到深度学习:边缘检测指标进化史(含ODS/OIS/AP的数学推导)

本文系统梳理了边缘检测评估指标的演进历程,从经典的Canny算子到深度学习时代,重点解析了ODS、OIS和AP三大核心指标的设计哲学与数学推导。文章深入探讨了基于PR曲线的评估体系,揭示了不同指标(如ODS与OIS)在阈值优化上的差异,并分析了AP指标在边缘检测任务中的优势与局限,为算法研究和模型评估提供了实用指南。

b9c0d的博客 199

HTTP报文

HTTP报文   之前写过一篇HTML报文,但是感觉写完之后还是不懂,最近终于有时间开始看《HTTP权威指南》,看完之后觉得还是比之前的理解更加深入了,提取HTTP报文出来做个记录。   HTTP报文分为请求报文(request message)与响应报文(res...

ajwqb06628的专栏 577

乐企归集能力说明文档V2.0006

纳税人销售货物、提供服务开具的增值税发票及购进货物、接受服务取得的增值税发票、海关缴款书(含出口转内销证明)、代扣代缴完税凭证,可以通过本能力进行归集。纳税人可将本能力中的各类规则和接口嵌入本单位信息化系统中(如:销售、报销、财务等),实现发票自动化归集,便于纳税人完成发票入账、抵扣、退税以及代办退税等操作,有效提升涉税业务办理效率。

记录点滴 573

【JavaWeb】详细讲解 HTTP 协议

带你快速入门并精通 HTTP 协议

August_._的博客 1045

SPICE仿真软件:PSpice_(10).噪声分析

噪声分析是电路设计和优化中的一个重要工具,特别是在低噪声放大器、传感器电路和通信电路中。通过准确设置噪声源和仿真参数,合理选择频率范围,并验证仿真结果,可以有效地评估和优化电路的噪声性能。PSpice提供的噪声分析功能强大且灵活,能够帮助工程师和研究人员在多种应用场景下进行详细的噪声分析。

kkchenjj的博客 1536

TC3XX - MCAL知识点(二十七):SENT Mcal配置及代码实战(单边半字节传输协议)

SENT协议只有一根线,异步传输!Sent协议的全称为Single Edge Nibble Trans .isson,单边半字节传输协议,是一种单线异步串行通信协议。Sent报文包含8个Nibble和一个校准位如图1所示,每一个Nibble数据被编码成PWM方式。设计这种协议的目的是用在与汽车ECU快速交互信息的传感器上,以此来取代低精确度的10bit AD和PWM。Sent是一种点对点的单方向从传感器到控制端的协议,控制器不需要同步信号。

梦想技术家 2271

JavaWeb 课堂笔记 —— 07 Web 入门、HTTP 协议和Tomcat

本系列为笔者学习JavaWeb的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)》,章节分布参考视频教程,为同样学习JavaWeb系列课程的同学们提供参考。

Celeste的博客 1081

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaWeb之HTTP协议(一)

✍目录总览 1、Http协议 HTTP协议,是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则,用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息 通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。 客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议” 1.1、浏览器中的书写格式 服务器端资源需要通过浏览器进行,此时由浏览器将我们给出的请求解析为满足HTTP协议的格式并发出。我们发出的请求格式

Augenstern_QXL的博客 1303

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【JavaWeb】Http协议及Servlet快速入门

HTTP 协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网 络协议。

少年你真的要止步于此嘛。 634

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaWeb之http协议

文章目录

weixin_42284219的博客 1298

Javaweb里的HTTP协议

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

weixin_65752158的博客 1253

JavaWeb 13.HTTP协议

HTTP超文本传输协议(HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几十年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文。HTTP协议就是规定报文的格式。

m0_73983707的博客 1066

Eclipse创建JavaWeb应用与HTTP协议

Eclipse创建JavaWeb应用与HTTP协议 Eclipse创建JavaWeb应用 一, 1.使用Eclipse必须加载Tomcat包 建议用最新版本! 2.解压Tomcat包,文件 3.测试Tomcat,点击bin中的点击startup开启,shutdown关闭, webapps找到ROOT查看。 4.通过 localhost:8080网页检测是否成功。 ...

cjy_lean的博客 2285

javaweb入门笔记(2)-http入门

对HTTP协议早有了解,最近在看javaweb,视频中讲到了这部分,就把视频的内容整理归纳下

brianway 3193
上一篇: javaweb入门(2)--tomcat虚拟目录映射
下一篇: javaweb入门(1)--tomcat安装与测试
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值