JSP总结一:HTTP协议

来源:互联网 发布:1024程序员节日 编辑:程序博客网 时间:2024/04/30 20:49

 

Http协议由Tim Berners-Lee(被称为Web之父)发明。Http协议是完全基于文本的。浏览器通过http协议和服务器交互,默认是80端口。也可以显式的在URL中指出端口号。比如:http://localhost:8080/index.html。Http协议是一种无状态协议,并且不适合实时的获取数据的应用,因为过多实时的客户端和服务端的交互将会导致网络的频繁通信并受到带宽的限制。Http协议也不能告诉服务器客户的请求是如何产生的。这使得B/S比C/S实现上难度较大。
       浏览器主要有两种命令和服务器交互,一种叫Get,另一种叫Post。逻辑上看,Get命令相当于读操作,向服务器发出请求,然后获取数据,Post命令向服务器发出执行某个动作的指令,有可能会修改服务器上的某些数据,因此是不可逆的操作。我们要防止用户不断的快速刷新页面引发的Post命令,通常一个提示对话框让用户确认操作是否真的有必要进行是一种常用的方法。
       Get命令的格式:请求行,请求首部,请求主体(可选)。
GET /index.html HTTP/1.0
Host: www.gefionsoftware.com
User-Agent: Mozilla/4.5 [en] (WinNT;I)
Accept: image/gif, image/jpeg, image/pjpeg, image/ping,*/*
Accept-Language : en
Accept-Charset : iso-8859-1,*,utf-8
 
       上面的例子里面,第一行是请求行,表明是GET命令,请求的资源是index.html ,协议是HTTP1.0。后面所有的都是请求首部,没有请求主体。
 
       服务器的应答格式:状态行,应答首部,应答主体(可选)。
HTTP/1.0 200 OK
Last-Modified: Mon, 20 Dec 2001:23:26:42 GMT
Date: Tue, 11 Jan 2002 20:52:40 GMT
Status:200
Content-Type: text/html
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59
 
<html>
       <body>
              <h1>Hello,world!</h1>
       </body>
</html>
 
       第一行是状态行,协议+状态值+状态描述。然后是应答首部,最后一段html代码是应答主体。我们经常能看到状态值为401的回应,代表未被授权。
       如果应答主体比较复杂,里面包含了图片或者其他资源的链接。客户端会自动再发出一个Get命令获取相关资源。通常这些动作是并行的,不过每个浏览器的行为不一样:IE似乎表现成串行,而Firefox会先将第一个应答主体的内容显示出来,在逐个显示内嵌图片的应答主体。
 
       Get命令还可加上请求参数。请求参数可以接着url后面,比如:
http://localhost:8080/index.html?a=2&b=7 ?开始,&间隔每个参数名称和值对。这种方式称为查询字符串。由于使用了?,=,&来作为分隔符,所以其他的字符在发送时都采用了URL编码方式,以避免混淆。
       也可以将请求参数(格式相同)作为请求主体的一部分发送,不过这通常是Post命令的做法。
       Post命令格式:
POST forecast HTTP/1.0
Host: www.gefionsoftware.com
User-Agent:Mozilla/4.5 [en] (WinNT; I)
Accept: image/gif, image/jpeg, image/pjpeg,image/png, */*
Accept-language: en
Accept-charset: iso-88569-1,*,utf-8
city=Hermosa+Beach&state=CA
 
       Post行中的 forecast是action的名称,后面是协议名。注意最后一行的查询字符串,没有?开头,并且是嵌入在Post主体中的。通常Post由form表单触发。比如上面的命令对应的form表单为:
<form action: “/forecast” method=”POST”>
       City: <input name=”city” type=”text”>
       State: <input name=”state” type=”text>
<p>
<input type=”SUBMIT”>
</form>
       注意,这里第一行加了属性method=”POST”,如果不加的话,默认为GET。
HTTP协议的其它方法还有OPTIONS,HEAD,PUT,DELETE,TRACE等五个。但是这些方法使用的很少。
原创粉丝点击