且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

http协议内容

更新时间:2022-06-17 01:04:29

前言:

http协议: 对浏览器客户端 和 服务器端 之间数据传输的格式规范

http1.0:当前浏览器客户端与服务器端建立连接之后,  
只能发送一次请求,一次请求之后连接关闭。
http1.1:当前浏览器客户端与服务器端建立连接之后,  
可以在一次连接中发送多次请求。(基本都使用1.1)

常见的请求方式: GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE

常用的请求方式: GET 和 POST

表单提交:
        <form action="提交地址" method="GET/POST">    

        <form>

浏览器请求:

请求(浏览器-》服务器)
GET /day09/hello HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

服务器响应:

响应(服务器-》浏览器)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 24
Date: Fri, 30 Jan 2015 01:54:57 GMT

this is hello servlet!!!

Http请求:

三部分组成:请求行,请求头,实体内容

GET /day09/hello HTTP/1.1               -请求行
Host: localhost:8080                    --请求头(多个key-value对象)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
                                    --一个空行
name=eric&password=123456             --(可选)实体内容

请求行:

GET /day09/hello HTTP/1.1 --》 请求方式:URI地址:HHTP协议

请求头:

Accept: text/html,image/*      -- 浏览器接受的数据类型
Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式
Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式
Accept-Language: en-us,zh-       --浏览器接受的语言
Host: www.it315.org:80          --(必须的)当前请求访问的目标地址(主机:端口)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间
Referer: http://www.it315.org/index.jsp      -- 当前请求来自于哪里
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型
Cookie:name=eric                     -- 浏览器保存的cookie信息
Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间

实体内容:

只有POST提交的参数会放到实体内容中

HttpServletRequest对象

后台接受前台HTTP请求封装成对象。

那如何提取其中的信息呢?

HttpServletRequest对象作用是用于获取请求数据。

核心的API:
    请求行: 
        request.getMethod();   请求方式
        request.getRequetURI()   / request.getRequetURL()    
        请求资源
        request.getProtocol()   请求http协议版本
    请求头:
        request.getHeader("名称")   根据请求头获取请求值
        request.getHeaderNames()    获取所有的请求头名称

    实体内容:
        request.getInputStream()   获取实体内容数据