在学习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. 机器学习数学知识中令人费解的notation符号注解

    $argmin_xf(x), min(f(x))$ $min(f(x))$的意思是函数$f(x)$的最小值 $argmin$的意思是返回使得表达式取得最小值时对应的输入变量值.例如$argmin_xf ...

  2. Celery学习---Celery 与django结合实现计划任务功能

    项目的目录结构: 项目前提: 安装并启动Redis 安装Django和Celery的定时任务插件 安装方法一: pip直接安装[安装了pip的前提下] omc@omc-virtual-machine: ...

  3. ZT 类模板的声明和实现是不能分离的

    http://bbs.csdn.net/topics/380250382 adlay adlay 等级: #9 得分:0 回复于: 2012-03-31 11:19:35 引用 6 楼  的回复: 引 ...

  4. Spring 读取配置文件的俩种方式

    读取配置可通过 org.springframework.core.env.Environment 类来获取, 也可以通过@Value的方式来获取 注解形式: @PropertySource({&quo ...

  5. python subprocess 和 multiprocess选择以及我遇到的坑

    The subprocess option: subprocess is 用来执行其他的可执行程序的,即执行外部命令. 他是os.fork() 和 os.execve() 的封装. 他启动的进程不会把 ...

  6. 编译Console程序时,可以指定Main入口函数

    有如下简单的console程序 using System; namespace HelloWorld { class Program { static void Main(string[] args) ...

  7. jquery mobile mobiscroll 日期插件使 用mobiscroll

    官网网站: http://www.mobiscroll.com/ http://code.google.com/p/mobiscroll/ 1.精简版Demo: 查看Demo » 下载Demo » 2 ...

  8. Servlet 处理请求

    一:Servlet 处理请求也是通过request来进行处理,类似于python. get请求通过request.getparameter("key");key为前端传过来的key ...

  9. P1877 [HAOI2012]音量调节

    题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改变的音量是多少. ...

  10. zabbix 从入门到精通

    https://www.cnblogs.com/clsn/p/7885990.html