javaweb-Http

1.Http定义:

1.HTTP(Hyper Text Transfer Protocol),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

2.HTTP基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等),服务器端返回数据的时候,也要带上什么东西。

3.HTTP协议工作于客户端-服务端架构为上。

2.版本

1.0

            请求数据,服务器返回后, 将会断开连接
1.1

        请求数据,服务器返回后, 连接还会保持着。 除非服务器 | 客户端 关掉。 
        有一定的时间限制,如果都空着这个连接,那么后面会自己断掉。

3.查看浏览器和 tomcat服务器的对接细节

左面是浏览器请求提交的数据信息

右面是服务器解析响应到的数据信息

4.Http请求数据解释

 

> 请求的数据里面包含三个部分内容 : 请求行 、 请求头 、请求体

* 请求行

        POST /examples/servlets/servlet/RequestParamExample HTTP/1.1 

        POST : 请求方式 ,以post去提交数据
            
        /examples/servlets/servlet/RequestParamExample
        请求的地址路径 , 就是要访问哪个地方。
    
        HTTP/1.1 协议版本

* 请求头

        Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-              xbap, */*
        Referer: http://localhost:8080/examples/servlets/servlet/RequestParamExample
        Accept-Language: zh-CN
        User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR                          2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
        Content-Type: application/x-www-form-urlencoded
        Accept-Encoding: gzip, deflate
        Host: localhost:8080
        Content-Length: 31
        Connection: Keep-Alive
        Cache-Control: no-cache

        Accept: 客户端向服务器端表示,我能支持什么类型的数据。 
        Referer : 真正请求的地址路径,全路径
        Accept-Language: 支持语言格式
        User-Agent: 用户代理 向服务器表明,当前来访的客户端信息。 
        Content-Type: 提交的数据类型。经过urlencoding编码的form表单的数据
        Accept-Encoding: gzip, deflate : 压缩算法 。 
        Host : 主机地址
        Content-Length: 数据长度
        Connection : Keep-Alive 保持连接
        Cache-Control : 对缓存的操作

* 请求体

>浏览器真正发送给服务器的数据 
    
        发送的数据呈现的是key=value ,如果存在多个数据,那么使用 &

        firstname=zhang&lastname=sansan

5.Http响应数据解析

> 请求的数据里面包含三个部分内容 : 响应行 、 响应头 、响应体

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=ISO-8859-1
    Content-Length: 673
    Date: Fri, 17 Feb 2017 02:53:02 GMT

    ...这里还有很多数据...

* 响应行
    
        HTTP/1.1 200 OK

         1.协议版本  

         2.状态码 :表示咱们这次交互到底是什么样结果的一个code. 

         3.OK :   对应前面的状态码  

200 OK                        //客户端请求成功
400 Bad Request               //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
403 Forbidden                 //服务器收到请求,但是拒绝提供服务
404 Not Found                 //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error     //服务器发生不可预期的错误
503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

  更多状态码http://www.runoob.com/http/http-status-codes.html
       

* 响应头

        Server:  服务器是哪一种类型。  Tomcat
    
        Content-Type : 服务器返回给客户端你的内容类型

        Content-Length : 返回的数据长度

        Date : 通讯的日期,响应的时间  

*响应体

页面的一系列内容html...     
 

6.Get 和  Post请求方式区别

1.请求路径不同,post请求在url后面不跟任何的数据,Get请求在地址后面跟上数据

2.带上的数据不同,POST请求会使用流的方式写数据,Get请求是在地址栏跟上数据

3,由于Post请求使用流的方式写数据,所以一定需要一个Content-Length的头来说明数据的长度有多少。

我们来看看两者的区别:

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

  3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

  4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

猜你喜欢

转载自blog.csdn.net/JQ210245253/article/details/89145285
今日推荐