美文网首页
Java web基础总结之二——http协议

Java web基础总结之二——http协议

作者: scucc | 来源:发表于2020-04-04 17:07 被阅读0次

    Java web基础总结之二——http协议

           由于java web是基于B/S的,所以http协议是java web 最基础,也非常重要的知识。HTTP协议用于定义客户端与web服务器之间进行通信的格式。从web服务器中获得某个web资源或者web 服务器接受客户端的请求都需要遵守一定的通讯格式,就是http协议。

    一.HTTP协议是什么?

            HTTP协议是学习java web的基石,同时也是管理和维护一些复杂的WEB站点的必备的基础,如果你想要深入的理解java web的服务器的实现,就更需要掌握它。

            HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是在TCP/IP协议之上的一个应用层协议,默认的端口是80,用于定义WEB浏览器与WEB服务器之间交换数据的格式和规范。

            HTTP协议是无状态的协议,是因为一个web服务器并不会保存关于客户机的任何的信息。在B/S架构中,web服务器总是打开的,具有固定的IP地址,同时服务成千上万的不同的浏览器。

            HTTP协议有两个版本:HTTP/1.0、HTTP/1.1。现在基本使用的都是HTTP/1.1。他们之间有一个重要的区别:在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。也就是常说的持久连接。

    二.持久连接和非持久连接的区别

              一个web页面,也被称为文档。是由对象组成的,简单的说,对象就是文件,比如html文件,图片文件等等。大部分的web页面含有一个基本html文件以及多个引用对象。比如一个web页面含有一个基本的html文件和2个图片文件,那么这个web页面就有3个对象。基本html文件通过对象的URL地址对对象进行引用。URL地址由两部分组成:存放对象的服务器的主机名和对象相对于主机的路径名。例如:

    http://c.csdnimg.cn/www/images/pic_foot_BNIA.png  中的 c.csdnimg.cn就是主机名,

    /www/images/pic_foot_BNIA.png就是路径名。

            非持久连接就是当客户端请求一个web页面时,对每一个对象的请求/响应都是经过一个单独的TCP连接发送。例如,如果一个web页面包含一个基本html文件和5个JPEG的图片文件。则使用非持久连接时,用户请求这个页面,会建立6个TCP连接。

            持久连接则是对一个页面的请求,甚至在同一个服务器上的多个web时,都可以在单个的持久TCP连接上进行传送。比如上面的例子中,可能只需要一个持久的TCP连接。一般来说,如果一个连接经过一定的时间间隔没有被使用,HTTP服务器就会关闭这个连接。

    三.HTTP的请求

        客户端的浏览器连上web服务器后,会向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括:一个请求行、一些消息头、和实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

    1. 请求行

        请求行中需要注意的是请求方式,主要有:

             POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

             我们常用的有:POST、GET 。其他的比较少遇到,这里就不多叙述了。

           POST或GET,都是用于客户端向服务器请求某个WEB资源,他们都可以带一些数据给服务器,但是他们有一定的区别:

    如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

                      GET/aaa/bbb?name=ccc&password=ddd HTTP/1.1

             GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量不能超过1K。可以看到,使用GET请求方式时,参数是显示在浏览器的输入框里的,所以是可见的。

    当请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,例如:

             POST /user/loginHTTP/1.1

             Host:

             Content-Type:application/x-www-form-urlencoded

             Content-Length:28

             name=aaa&password=bbb

             Post方式的特点:传送的数据量没有大小的限制,而且参数不会在浏览器的地址框里显示。

    2. 消息头

       http请求头是必须存在的,它携带了很多的重要的信息,比如客户端的浏览器的标识,下面是HTTP请求中的常用头:

    Accept: text/html,image/*   

    Accept-Charset: ISO-8859-1

    Accept-Encoding: gzip,compress

    Accept-Language: en-us,zh-cn

    Host: http://www.csdn.net:80

    If-Modified-Since: Tue, 11 Jul 2010 18:23:51 GMT

    Referer: http:// http://www.csdn.net

    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

    Cookie

    Connection: close/Keep-Alive  

    Date: Tue, 11 Jul 2010 18:23:51 GMT

    四.HTTP的响应

            和HTTP的请求相对应,一个HTTP响应表示服务器向客户端回送的数据,它也包括三个部分:一个状态行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用一个空行作为间隔。

            状态行中需要知道的就是状态码,状态码表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码总共分为5类,如下所示:

    100~199表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

    200~299 表示成功接收请求并已完成整个处理过程,常用200

    300~399为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址,常用302、307和304。比如304的重定向

    400~499客户端的请求有错误,常用如403的禁止访问和404的找不到资源

    500~599服务器出现错误,比如服务器端程序抛出了异常,常用 500。

     和 HTTP请求头一样,HTTP也有一些常用的响应头,如下所示:

    Location: http:// www.csdn.net

    Server:apache tomcat

    Content-Encoding: gzip

    Content-Length: 80

    Content-Language: zh-cn

    Content-Type: text/html; charset=GB2312

    Last-Modified: Tue, 11 Jul 2010 18:23:51 GMT

    Refresh: 1;url=http://www.csdn.net

    Content-Disposition: attachment; filename=aaa.zip

    Transfer-Encoding: chunked 

    Set-Cookie:SS=Q0=5Lb_nQ; path=/aaa

    Expires: -1

    Cache-Control: no-cache 

    Pragma: no-cache  

    Connection: close/Keep-Alive  

    Date: Tue, 11 Jul 2000 18:23:51 GMT

       需要注意的是,有一些通用的消息头,既可以用于请求,也可以用于响应,比如:

      Cache-Control:no-cache    用于指定是否需要缓存

      Pragma:no-cache   Pragma: no-cache兼容http 1.0 ,Cache-Control:no-cache是http 1.1新加的消息头。

      Connection:close/Keep-Alive   这个就是控制是持久连接还是非持久连接。

      Date: Tue, 11Jul 2000 18:23:51 GMT 

    相关文章

      网友评论

          本文标题:Java web基础总结之二——http协议

          本文链接:https://www.haomeiwen.com/subject/bfbjphtx.html