在学习Web应用程序客户端界面设计时,我们已经知道组成一个基本的Web应用程序需要Web服务器、Web客户端浏览器、HTTP协议以及静态HTML文件。

Web服务器:接收客户端请求,然后向客户端返回一些结果;

浏览器:允许用户请求服务器上的某个资源,并且向用户显示请求的结果;

HTML:告诉用户浏览器怎么向用户显示内容;

HTTP:Web上客户端和服务器之间通信所用的协议;

HTTP

HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通信的一种规则。在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层。HTTP是一种无状态的协议(在Web浏览器[客户端]和Web服务器之间不需要建立持久的链接)。整个过程就是当一个客户端向服务器发送一个请求(Request),然后WEB服务器返回一个响应(Response)。之后链接就关闭了。HTTP遵循请求/响应(Request/Response)模型的,所有的通信交互都被构造在一套请求和响应模型中。
HTTP定义的事务处理由以下四个步骤组成

客户端和Web服务器建立链接;

客户端发送HTTP请求;

服务器端接收客户端的HTTP请求,生成HTTP响应回发;

客户端和Web服务器建立链接;

发送请求信息

一旦建立了TCP链接,Web浏览器就会向Web服务器发送请求命令。HTTP协议将来自于客户端的请求信息封装成HTTP请求,它包括请求行、请求头、消息体以及分隔请求头和消息体的空行;
请求行:请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本。中间用空格分开

在HTTP版本1.1中,定义了有八种可能的HTTP请求方法

  Ⅰ GET:由于向服务器检索资源;

  Ⅱ POST:由于向服务器发送数据,并要求指定的URL处理;

  Ⅲ HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档;

  Ⅳ PUT:请求服务器保存请求数据作为指定URL新内容;

  Ⅴ DELETE:请求服务器删除URL中命名的资源;

  Ⅵ OPTIONS:请求关于服务器支持的请求方法信息;

  Ⅶ CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理;
在这些方法中,我们最常用的是GET和POST方法,其它几种方法对于Web开发者来说不是很常用。

方法

为该方法为该方法的请求

POST

在浏览器地址栏输入URL;
在当前网页点击HTML链接;
在HTML表单中设置表单的method='GET'或者不设置(默认为GET方法提交),并提交表单;

GETGET

通常被用于发送私密信息或者大量信息,或者上传文件。如果一个应用程序需要修改数据或者添加数据,并且通过HTTP发送请求,那么就应该使用POST方法。

请求头:

HTTP协议使用HTTP头来传递请求的元信息,HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP的值。常见的请求头由用户代理资料、可以接受的格式、语言以及内容编码,这些信息用于告诉服务器客户端是什么,客户端想要得到什么格式的回馈信息等。

空行:

发送回车符和退行,通知服务器一下不再有请求头。

消息体:

HTTP请求中带有查询字符串时,如果是GET方法,查询字符串或表单数据附加在请求行中,那么消息体中就没有内容;如果是POST方法,查询字符串或表单数据就添加在消息体中。

回送响应消息

Web服务器解析请求,定位并读取指定的资源。将文件以及其它信息组成HTTP响应返回到客户端。HTTP响应包括:状态行、响应头、消息体以及分隔消息头和响应头的一个空行。

状态行:

每个HTTP响应以一个状态行开头。状态行由HTTP协议版本、响应状态码和响应描述组成,三者之间用空格分开。

响应状态码是一个三位的数字,它分为以下几个组:

  Ⅰ 100~199:信息,请求收到,继续处理;

  Ⅱ 200~299:成功,行为被成功地接受、理解和采纳;

  Ⅲ 300~399:重定向,为了完成请求,必须进一步执行的动作;

  Ⅳ 400~499:客户端错误,请求包含语法错误或者请求无法实现;

  Ⅴ 500~599:服务器错误,服务器不能实现一种明显的无效请求;

每一个响应状态码都有相关联的字符串响应描述。

响应头:

响应头与请求头一样,也是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。典型的响应头包括内容描述、内容长度、时间邮戳、服务器信息、内容最后更改的时间。这些信息帮助客户端得到发送过来的内容是什么、内容的大小、数据是否比以前一次响应更新。

在响应头中,最重要的HTTP头是Content-Type,它指定MIME类型。MIME类型告诉浏览器要接受的数据是什么类型,这样浏览器才知道如何显示这些数据。这个值通常与HTTP请求头中的Accept相关

空白行:

最后一个响应头之后是一个空行,发送回车符和退行,表明以下不再有响应头。

消息体:

要发送给客户端的HTML文档或其他要显示的内容等。Web服务器把发送给客户端的文档信息放在消息体中。

关闭连接

HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否成功的状态代码。然后解析每一个响应头,读取响应消息体,将消息体渲染在浏览器页面上。

一个HTML文档可能包含其它的需要被载入的资源,浏览器会识别,并对这些资源再进行额外的请求,这个过程可以一直循环到所有的数据都按照响应头标中规定的格式恢复到页面中。数据传送完毕,服务器关闭连接,即无状态协议。

JavaWeb总结(一)的更多相关文章

  1. 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)

    在上一节中,主要阐述了JavaScript方面的学习路线.先列举一下我朋友的经历,他去过培训机构,说是4个月后月薪过万,虽然他现在还未达到这个指标. 培训机构一般的套路是这样:先教JavaSE,什么都 ...

  2. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  3. JavaWeb——Listener

    一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...

  4. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  5. javaWeb应用打包

    在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  6. JavaWeb——tomcat安装及目录介绍

    一.web web可以说,就是一套 请求->处理->响应 的流程.客户端使用浏览器(IE.FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Reque ...

  7. 做JavaWeb开发不知Java集合类不如归家种地

    Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...

  8. JavaWeb基础学习体系与学习思路

    对于JAVAWEB的学习,首先一定要明确的是学习整体框架和思路,要有一个把控.对于WEB,很多人认为是做网页,简单的把静态网页与JAVAWEB与网页设计一概而论. 拿起一本JS就开始无脑的学习,学了一 ...

  9. Eclipse下配置javaweb项目快速部署到tomcat

    用惯了VS,再用Eclipse,完全有一种从自动挡到手动挡的感觉啊. 很多同学在Eclipse下开发web项目,每一次修改代码,看效果的时候都有右键项目->Run as -> Run on ...

  10. javaweb学习笔记之servlet01

    一.Servlet概述 A servlet is a small Java program that runs within a Web server. Servlets receive and re ...

随机推荐

  1. Apache服务器如何通过.htaccess文件设置防盗链?

    Apache服务器通过.htaccess文件设置防盗链 用户经常面对的一个问题就是服务器的流量问题,而站点文件被盗链是其中最为主要的部分.所谓盗链,是指其他网站直接链接我们网站上的文件,一般来说,盗链 ...

  2. 只能在堆上生成的对象 VS. 只能在栈上生成的对象

    1. 只能在堆上 即禁止在栈上生成.如何实现? 当对象建立在栈上面时,是由编译器分配内存空间的,调用构造函数来构造栈对象.如果类的析构函数是私有的,则编译器不会在栈空间上为类对象分配内存. 所以,只需 ...

  3. asp.net mvc多级目录结构和多级area实现技巧

    今天在工作要实现这个多级area.其原因是这个项目需要多级的功能,大的类别里有小的类别,小的类别里有具体的功能项,每一个功能项还有若干动作Action,所以在菜单和mvc工程的结构上都需要有体现多级的 ...

  4. 显示脉冲效果的PulsingView

    显示脉冲效果的PulsingView 效果如下: 源码: PulsingView.h 与 PulsingView.m // // PulsingView.h // PulsingView // // ...

  5. [翻译] DraggableYoutubeFloatingVideo

    DraggableYoutubeFloatingVideo DraggableYoutubeFloatingVideo allows you to play videos on a floating ...

  6. django使用LDAP验证

    1.安装Python-LDAP(python_ldap-2.4.25-cp27-none-win_amd64.whl)pip install python_ldap-2.4.25-cp27-none- ...

  7. Python初学者第二十四天 函数进阶(3)生成器

    24day 1.列表生成式: 循环模式:[变量(加工后的变量) for 变量 in iterable] print([i for i in range(0,101,2)]) [1,4,9,16,25, ...

  8. Aiseesoft Data Recovery 1.1.6 专业数据恢复软件破解版

    Aiseesoft Data Recovery是专业的数据恢复软件,它可以帮助你恢复几乎所有删除/丢失的文件,如照片,文件,电子邮件,音频,视频且支持从计算机,硬盘驱动器,闪存驱动器,存储卡,数码相机 ...

  9. win10想说爱你不容易——安装.net3.5也是一个坑(已有完美解决方法)

    最终完美解决方法:经过多次波折,终于找到无法正常安装.net3.5的原因了,是因为已删除的用户还有注册表残留导致的,而且这个问题还会影响一个win10更新的安装,导致每天更新失败,撤销更新... 详见 ...

  10. VRSProcess(二)

    1._beginthreadex再谈 Windows操作系统提供了这样的一种解决方案——每个线程都将拥有自己专用的一块内存区域来供标准C运行库中所有有需要的函数使用.而且这块内存区域的创建就是由C/C ...