web 学习笔记8-HTTP协议,请求头,响应头

时间:2021-04-21 21:02:37

1、HTTP协议简单介绍:

HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
HTTP协议的版本
HTTP/1.0(每次只处理一个请求)
HTTP/1.1(可以处理多个请求,然后才关闭连接)

2、CS和BS:

软件开发的两种架构
Client(客户端程序)----------Server(数据库服务器)
Browser(浏览器)-------------Web Server(Servlet/Jsp)----------Darabase Server(数据库服务器)

随着网络带宽的不断提升,云计算概念的提出,浏览器只要足够强大,c/s架构立马就会被淘汰,
不仅c/s架构会被淘汰,软件最终都会消失、操作系统都可以没有,最终将会是b/s架构的天下,也就是浏览器+搜索引擎的天下。
所有现在桌面软件提供的功能,最后都由网站提供,
也就是说,将来打开电脑就是一个浏览器,想要什么服务,通过搜索引擎一找,就可以在网上找到相应的服务,用就是了。

3、请求和响应信息:

都由三部分组成
请求信息:
a.请求行 (由3部分组成)
1.请求的方式
2.请求的资源地址
3.请求协议
b.请求头信息(2部分组成)
1.头名称
2.头值
c.请求正文 (只有请求的类型是post才会有)
例如:
POST /app/a.html HTTP/1.1 请求行(请求方式 资源地址 协议版本)
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, 请求头(头名称,头值)
application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap,
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

name=abc&age=100 (请求正文)

响应信息:
a.响应行(由3部分组成)
1.响应协议
2.状态吗
3.状态信息
b.响应头信息(2部分):
a): 响应头
b): 头值
c.响应正文.
例如:
HTTP/1.1 200 OK 响应行(响应协议 状态码 状态信息)
Server: Apache-Coyote/1.1 响应头 (头名称,头值)
Accept-Ranges: bytes
Content-Length: 13
Date: Wed, 19 N

hello world!! 响应正文

4、get和post方式区别:

a.get方式请求参数会附加在url后,而post是看不到的,post相对安全
b.get方式对提交的数据大小有限制(1k),post方式对数据大小没有限制.

5、响应的状态码:

200 :Ok
302(307) : 请求重定向
304 : 未修改
404: 找不到
500: 代码错误

6、地址栏回车,F5刷新及crtl+F5的区别

如果已经访问过了一个网页:localhost:8080/test/test.html
使用chrome浏览器,开发者工具-Network 查看

地址栏回车:status会显示304,服务端未修改。
F5刷新:会从缓存取数据
crtl+F5:不管有没有修改,都会从服务器取一份最新的。status会一直是200

7、请求头信息:

Accept: 浏览器告诉服务端, 浏览器可接受的MIME类型(很重要)
MIME类型: 相当于操作系统下的文件类型。
是由大类型和小类型组成: text/html;
对应的关系在conf/web.xml中查询
Accept-Charset: 浏览器告诉服务端, 浏览器支持哪种字符集
Accept-Encoding: 浏览器告诉服务端, 浏览器能够进行解码的数据编码方式,比如gzip
Accept-Language: 浏览器告诉服务端,浏览器支持的语言种类
Host: 浏览器告诉服务端,浏览器所在的主机
Referer: 浏览器告诉服务端,当前页面从哪里来的。(很重要)
用处:
1. 用来记录广告的信息
2. 防盗链
Content-Type: 浏览器告诉服务端 ,内容类型 If-Modified-Since: 浏览器告诉服务端修改的时间
Content-Length: 浏览器告诉服务端 请求正文内容长度
Connection: 浏览器告诉服务端,连接的状态
Cookie: 浏览器告诉服务端 ,浏览器携带的Cookie(特别重要)
Date: 浏览器告诉服务端,发送请求的时间

8、响应头信息:

Location : 服务端用来告诉浏览器,请求需要重定向.(必须结合状态码302使用)(很重要)
Server : 服务端用来告诉浏览器,服务器的类型
Content-Encoding: 服务端用来告诉浏览器,服务器对数据采用的编码(很重要)
Content-Length: 服务端用来告诉浏览器,响应正文的长度
Content-Language: 服务端用来告诉浏览器,zh-cn服务发送的文本的语言
Content-Type: 服务端用来告诉浏览器,你要用哪个码表来解析二进制数据(很重要)
Last-Modified : 服务端用来告诉浏览器,访问资源的最后修改时间(很重要)
Refresh:服务端用来告诉浏览器,多长时间刷新一次(很重要)
Content-Disposition: 服务端用来告诉浏览器,以下载文件的方式打开文件(很重要)
Expires: -1 : 服务端用来告诉浏览器,不要缓存 Cache-Control: no-cache (1.1) Pragma: no-cache (1.0)(很重要)
Set-Cookie: 服务端用来告诉浏览器,要存储的内容(特别重要)

9、myeclipse中使用tomcat:

myeclipse下载地址:直接在网页搜myeclipse,百度下载,直接安装就OK
myeclipse中配置tomcat的方法:(已经有了个tomcat7.0在我的电脑上)

a.Window-MyEclipse-Servers-Tomcat-Tomcat7.x
选择你的tomcat路径
将tomcat设置为Enable
确定
b.启动tomcat,在界面有个图标可以Start启动
控制台打印:信息: Server startup in 4452 ms 说明启动成功了
c.新建个web工程
File-New-Web Project-Test,直接下一步,Finish
新建一个com.test.servlet包
在这个包下建个Servlet,右击-New-Servlet,名称ServletDemo1,继承javax.servlet.http.HttpServlet
Finish
d.部署工程到tomcat中
在myeclipse界面点击按钮
Add你配置的tomcat服务器
选择你要部署的工程
OK
e.访问网址:http://localhost:8080/Test/servlet/ServletDemo1
一切正常