一、什么是HTTP协议:

1、概念:

客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式(规定客户端和服务器如何进行交互)。

HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是基于TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

注:HTTP协议是学习JavaWeb开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

OSI网络七层协议:

应用层(HTTP、FTP、SMTP、POP3、TELNET)-》表示层-》会话层-》传输层(TCP、UDP)-》网络层(IP)-》数据链路层-》物理层

注:传输层和网络层的协议统称为TCP/IP协议。

2、HTTP请求:

HTTP使用请求-响应的方式进行传输,一个请求对应一个响应,并且请求只能由客户端发出,服务器只能被动的等待请求做出响应。

3、Win7自带的Telnet工具:

利用Telnet可以简单地演示请求与响应的过程。Win7默认没有打开telnet功能,要在控制面板中开启:

操作如下:

我们先在D:\apache-tomcat-8.0.14\webapps\MyTest目录下建一个test.html页面,效果如下:(Tomcat端口已改为80)

然后在cmd中输入如下命令:

telnet localhost  

然后马上按住快捷键ctrl+],回车。紧接着输入如下命令:

GET /MyTest/test.html HTTP/1.1
Host:localhost 

两次回车后,就可以看到网页上的内容了:

这种方式太麻烦了,建议用下面介绍的httpwatch

4、httpwatch工具:

httpwatch是专门为IE浏览器和火狐浏览器提供的,用来查看HTTP请求和相应的工具,对于我们开发者很有帮助,可以使我们更好的学习HTTP协议。

安装完成后,就可以在IE浏览器中看到这个插件了:

清空浏览器缓存,重新输入网址,效果如下:

上图中,左边是浏览器发出的响应,右边是服务器返回的请求。

同样,在chrome浏览器中看到的效果是这样的:

5、HTTP1.0和HTTP1.1的区别:

  • 在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。
  • HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

注:通俗来讲,区别只有一个:当客户端与web服务器建立连接后(底层是流的操作),如果采用HTTP1.0协议,流会立即断开;HTTP1.1协议,流会保存一段时间,下次重新连接时,还继续使用这个流。

问题:一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。

答案:3次。

二、get/post请求的区别:

注:GET请求方式和POST请求区别在于请求参数在传递的过程中方式不同

  • get请求方式:显式请求方式,请求参数会在URL上显示,相对快,安全性较低,请求数据的大小一般不超过1kb。
  • post请求方式:隐式请求方式,请求参数将会在http请求的实体内容中进行传输,相对慢,安全性较高 ,请求数据的大小没有限制

三、常见请求头与相应头:

还是来看上面这个网页:

第一行为请求行,剩下的内容为请求头、实体内容。

请求行:GET /MyTest/test.html HTTP/1.1      请求方式、请求的资源部分的名称、所遵循的协议版本

1、常见请求头:

  • Host:www.baidu.com      本次请求访问的主机地址(虚拟主机名称)
  • Cache-control:no-cache        设置网页缓存的使用方法
  • Pragma:no-cache
  • Accept:text/html,xxxxxx…..客户端可以接收的数据类型(如果内容是:*/*,表示接收所有类型)
  • User-Agent:Mozilla/5.0xxxxx 主要表示客户端类型
  • Accept-Encoding:gzip,deflate,sdch 浏览器能够接收的数据压缩编码方式(表示浏览器能够接收什么格式的压缩的数据)
  • Accept-Language:zh-CN,zh;q=0.8 浏览器期望的接受的语言种类
  • Accept-Charset: ISO-8859-1      客户端所接收的字符集编码
  • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT   和缓存机制相关的头
  • Referer: http://www.smyh.me/index.jsp   当前页面来自哪个页面(可能是由之前的页面通过超链接点进到这个页面来)
  • Cookie
  • Connection: close/Keep-Alive   请求完之后,是关闭此连接,还是继续保持连接
  • Date: Tue, 11 Jul 2013 18:23:51 GMT 当前请求的时间

注:上面的这些指的是get请求的请求头。

接着来看第一段网页中右边的内容:

第一行为状态行,后面的内容为响应头、实体内容。

状态行:HTTP/1.1 200 OK   协议版本、状态码、原因叙述<CRLF>

【状态码】

状态码:用于表示服务器对本次请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:

常见状态码如下:

  • 200      成功接收请求
  • 302      实现重定向的功能
  • 304/307  使用浏览器中内置的缓存资源
  • 404      客户端请求错误
  • 500      服务器段出现错误

2、常见响应头:

常见的响应头键值对的含义:

  • Location: http://www.smyh.me/index.jsp    重定向(302+Location实现重定向)
  • Server                       服务器类型
  • Content-Encoding       服务器当前返回给客户端的数据压缩格式
  • Content-Length          返回给客户端的数据量的大小
  • Content-Language: zh-cn  语言种类
  • Content-Type: text/html; charset=GB2312        返回的数据的类型、返回的字符集编码方式(通过设置charset,让浏览器用指定的方式进行解码)
  • Last-Modified             资源最后一次修改的时间(配合请求头中的If-Modified-Since+304/307实现缓存机制)
  • Refresh: 1;url=http://www.it315.org    隔多少秒以后,让当前页面去访问哪个地址(例如网页登陆成功,3秒后跳回原来的界面,就是用的这个头)
  • Content-Disposition: attachment;filename=aaa.zip   和下载相关,通知浏览器以附件的形式下载服务器发送过去的数据
  • Transfer-Encoding: chunked  数据传输模式
  • Set-Cookie:SS=Q0=5Lb_nQ; path=/search     和cookie相关的头
  • ETag: W/"83794-1208174400000"       和cookie相关的头
  • Expires: -1        通知浏览器是否缓存当前资源:如果这个头的值是一个以毫秒为单位值,则通知浏览器缓存资源到指定的时间点;如果值是0或-1,则通知浏览器禁止缓存
  • Cache-Control: no-cache   通知浏览器是否缓存资源
  • Pragma: no-cache         -- 通知浏览器是否缓存资源

注: 之所以上面的三个头是一个功能,是因为历史原因。不同的浏览器对这三个头支持的不同,一般来说这三个头要同时使用,以确保不同的浏览器都能实现控制缓存的功能

  • Connection: close/Keep-Alive   是否继续保持连接
  • Date: Tue, 11 Jul 2000 18:23:51 GMT    当前响应的时间

JavaWeb学习----http协议的更多相关文章

  1. javaWeb学习总结(2)- http协议

    一.http简介 1.基本介绍: (1)客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式. (2)WEB浏览器 ...

  2. javaweb学习2——HTTP协议

    声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...

  3. JavaWeb学习总结-01 JavaWeb开发入门

    一 基本概念 1 Web开发的相关知识 Web,表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页面): ...

  4. JavaWeb学习总结(一)——JavaWeb开发入门

    http://www.cnblogs.com/xdp-gacl/p/3729033.html 只为成功找方法,不为失败找借口! JavaWeb学习总结(一)--JavaWeb开发入门 一.基本概念 1 ...

  5. JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  6. JavaWeb学习总结(一)JavaWeb开发入门

    静态网页和动态网页 静态网页:在服务器上没有经过服务器解释执行的网页. 动态网页:在服务器上经过服务器解释执行的网页. 无论是静态网页还是动态网页,客户端看到的网页都是由HTML所构成的,所以Java ...

  7. JavaWeb学习总结(转载)

    JavaWeb学习总结(五十三)--Web应用中使用JavaMail发送邮件      JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件     JavaWeb学习总结(五十 ...

  8. (转)JavaWeb学习之Servlet(二)----Servlet的生命周期、继承结构、修改Servlet模板

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140466.html 一.http协议回顾: 在上一篇文章中:JavaW ...

  9. 转载-JavaWeb学习总结

    JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件 孤傲苍狼 2015-01-12 23:51 阅读:13407 评论:20     JavaWeb学习总结(五十二)——使用 ...

随机推荐

  1. PHP redis Api 中文文档

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...

  2. Picasso

    1.简介 Picasso是Square公司出品的一个强大的图片下载和缓存图片库1)在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解 ...

  3. 通过GPS数据反向地理信息编码, 得到当前位置信息

    检查可用性 这属于基础知识, 不赘述, 总的来说,你的设备的支持要打开, 添加CoreLocation的framework, 引用头文件, 添加委托,然后, 好的实践是在使用前编程检查相关可用性: - ...

  4. gulp入坑系列(1)——安装gulp

    前言   好吧,我承认我是为了搞定Sass编译CSS文件的问题,迷一样的着手入gulp的坑,sass和gulp的爬坑历程大概会一起更新.然后感觉这里windows和mac的流程差不多,不过mac的通常 ...

  5. 模拟Select-Options对象实现多项数据输入功能

       模拟Select-Options对象实现多项数据输入功能 Select-Options对象可以同时输入多项值并将所输入数据存入内表以供程序使用,不过Select-Options的功能有一定的局限 ...

  6. 网站SEO之百度优化不得不知的铁人三项规则

    奥运会有铁人三项,此运动更好的协调了运动员的综合素质水平,而百度优化排名中的“铁人三项”规则则是让网站的整体质量更好的满足市场用户体验.针对不同部分的操作,可以让网站在每个细节处都能凸显以人为本的服务 ...

  7. DAX 2009 for Retail's P job does not work after restoring AX database from another environment.

    This time, it's P job.  We already re-configured profiles, distribution locations, distribution grou ...

  8. SharePoint 2013 术语和术语集介绍

    托管元数据是一个集中管理的术语的分层集合,我们可以定义术语和术语集,然后将其用作 SharePoint Server 2013 中项目的属性.简单的说,术语是一个可与 SharePoint Serve ...

  9. How to upgrade workflow assembly in MOSS 2007

    This problem generally start when you are having an existing custom workflow and there are instances ...

  10. 解决连接Oracle 11g报ORA-01034和ORA-27101的错误

    参考文献: http://10000001.blog.51cto.com/4600383/1248367 背景: 使用sqlplus连接oracle,提示ORA-01034和ORA-27101,具体内 ...