http协议请求和响应

		1、http协议的简介
			* 协议:双方达成共同的目标
				-请求:在浏览器的地址栏输入一个地址,点击回车,这个地址到访问的服务器,这个过程称为请求
			
				-响应:服务器接受到发出的请求,根据请求返回数据到浏览器里面进行显示,这个过程响应

			* http协议:请求和响应的过程中,遵循一定的数据格式
				-特点:
					--请求和响应同时存在,先有请求之后有响应
					--http协议基于tcp协议,默认端口是80

			*使用命令 telnet 模拟http协议
				-首先连接tomcat服务器 telnet localhost	80
					--不能输入的问题使用解决问题 在键盘上 ctrl ]

				-请求的数据格式:
					GET /index.jsp HTTP/1.1 
					host:localhost

				-响应的数据格式
					HTTP/1.1 200 OK
					Server: Apache-Coyote/1.1
					Accept-Ranges: bytes
					ETag: W/"27-1432777730225"
					Last-Modified: Thu, 28 May 2018 01:48:50 GMT
					Content-Type: text/html
					Content-Length: 27
					Date: Thu, 28 May 2018 07:03:37 GMT

					<h1>AAAAAAAAAAAAAAAAAA</h1>

				-在win7系统里面,默认情况下不是直接是telnet命令,需要打开这个命令

			*一个软件的介绍 httpwatch(只能在ie上使用)
			
				-当安装之后,打开ie浏览器,可以使用这个软件
				
				-在ie浏览器工具里面自动添加 httpwatch p...
				
				-如果在工具里面找不到,使用快捷键 shift f2

				-使用这个软件,必须要点击 record(红色按钮)
				
				-在地址栏输入一个地址,点击回车,在下面出现请求地址,点击这个地址
				
				-在最下面点击 stream,在stream下面有左右两部分,左边的部分是请求的数据格式,右边的部分是响应的数据格式

			*因为httpwatch只能在ie下使用,在火狐或者谷歌浏览器里面可以使用自带的调试工具
				-都是使用f12打开调试工具
				
				-在火狐里面,点击网络,就可以查看到当前请求和响应的数据
				
				-在谷歌里面,点击NetWork,查看到当前请求和响应的数据

			*HTTP/1.0 和 HTTP/1.1区别
				-使用telnet命令,分别 操作这两个版本的HTTP
				
				-使用HTTP/1.0,如果做出响应立刻断开连接
				
				-使用HTTP/1.1,做出了响应之后不会立刻断开

		2、http协议的请求
			* 分别是 get 和 post 提交表单,查看请求的数据格式
				-get提交:在地址栏会携带请求的数据,
				-post提交:在地址栏不会携带数据,数据在请求体里面

			*创建一个页面,创建一个表单,使用get方式进行提交
				--使用get提交之后,请求的数据格式
				GET /day07/request/formget.html?username=zhangsan HTTP/1.1 请求行:请求方式 请求地址 http版本
				//请求头:以键值对形式存在
				Accept: text/html, application/xhtml+xml,*/*
				Referer: http://127.0.0.1/day07/request/formget.html
				Accept-Language: zh-CN
				User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; MAAU)
				Accept-Encoding: gzip, deflate
				Host: 127.0.0.1
				If-Modified-Since: Thu, 28 May 2018 07:27:11 GMT
				If-None-Match: W/"591-1432798031872"
				Connection: Keep-Alive
			
			* http协议的请求三部分组成:
				-第一部分:请求行
					--请求行里面包含:请求方式、请求地址、http版本

				-第二部分:请求头
					--类似key-value形式,一个key可以对应一个value,也可以对应多个value
					
					--三个重要的请求头
						---Referer:防盗链,得到当前请求的地址
							----创建两个文件夹 my  和 other
								-----分别创建两个页面 my.html  other.html
								-----只能是my文件夹里面的文件才可以访问
								-----只有my文件夹里面的文件才可以访问servlet

						---User-Agent:获取当前请求的浏览器的信息

						---If-Modified-Since:经常和响应里面Last-Modified一起使用,用于查询本地缓存

				-第三部分:请求体
					-通过post提交的数据 user=lisi
				
			*表单提交的方式有很多种,常用的两种 get和post
				-Accept: text/html,image/*   客户端识别文件类型  
				
				-Accept-Charset: ISO-8859-1  客户端字符集
				
				-Accept-Encoding: gzip   客户端支持编码类型 gzip 压缩格式 
				
				-Accept-Language:zh-cn  客户端语言
				
				-Host: www.itcast.com:80  访问服务器地址 
				
				-If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT (重要) 和Last-Modified 一起使用 控制缓存
				
				-Referer: http://www.itcast.com/index.jsp (重要) 防止盗链 
				
				-User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 浏览器类型(文件下载时,不同浏览器进行不同处理)
				
				-Connection: close/Keep-Alive   请求后连接是关闭还是保持
				
				-Date: Tue, 11 Jul 2000 18:23:51 GMT 请求时间 

		3、http协议的响应
			* HTTP/1.1 200 OK
			Server: Apache-Coyote/1.1
			Accept-Ranges: bytes
			ETag: W/"578-1432798092723"
			Last-Modified: Thu, 28 May 2015 07:28:12 GMT
			Content-Type: text/html
			Content-Length: 578
			Date: Thu, 28 May 2015 07:49:29 GMT

			<!DOCTYPE html>
			<html>
			  <head>
				<title>formpost.html</title>
				
				<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
			.......................

			* http协议的响应有三部分组成:
				-第一部分:响应行
					--结构:http版本、状态码 、状态码描述
					--状态码:当前的响应的状态
					--常见的状态码
					---200:成功 ok
					---302:重定向 
					---304:查找本地缓存
					---404:资源找不到
					---500:服务器内部错误(代码写错了)
					---503:服务器挂了

				-第二部分:响应头
					--类似key value形式,一个key可以有一个或者多个value
					--三个重要的响应头信息
						---Location
							----经常和302一起实现重定向的操作
							----代码
							//重定向使用状态码 302
							response.setStatus(302);
							//设置头信息 Location 完成重定向的操作
							response.setHeader("Location", "/day07/my/my.html");

						---Refresh
							----在页面的定时跳转
							----代码
							response.getWriter().write("页面将在3秒之后跳转..");
							//使用Refresh头信息实现定时跳转
							response.setHeader("Refresh", "3;url=/day07/other/other.html");

						---Last-Modified:
							** 经常请求里面If-Modified-Since一起使用查找本地缓存

					--Content-Disposition:做文件下载时候
					
					--禁用浏览器缓存
						Expires: -1
						Cache-Control: no-cache 
						Pragma: no-cache   

				-第三部分:响应体
					--显示到页面上的内容

				-重定向和转发区别
					--在一个请求里面,又做了一次请求
					--重定向:比如找小文借钱10万,小文没有钱,告诉我小温有钱,我再去找小温,把钱拿到
						---请求两次,响应两次

					--转发:比如找张三借钱,但是张三没有钱,张三去帮我找李四借钱,最终把钱给我
						---请求一次,响应一次

		4、If-Modified-Since和Last-Modified查找本地缓存
			* 画图分析执行的过程

			* 比如访问图片,第一次访问时候,在服务器端产生访问时间 使用头信息存储 Last-Modified
			
			* 给一个响应:首先把图片显示到页面上,携带第一次产生的时间,把时间存到浏览器中 使用 If-Modified-Since

			* 第二次访问图片,请求时候携带第一次这个时间发送请求,到了服务器,拿着请求的时间和服务器上面的时间进行比较,
			如果有相同的时间,返回状态码 304,让找本地缓存;如果没有相同的时间,重新请求新的数据

		5、web开发中缓存处理
			* 使用快捷键 ctrl f5:表示无缓存刷新
			
			* 移除项目重新部署,或者找到tomcat的work目录,把work里面内容都删除
			
			* 直接使用浏览器清除缓存
		
			* 请求的地址后面加一个随机数 http://127.0.0./day11/1.html?id=随机数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值