解析HTTP协议:
HTTP是一种超文本传送协议(HyperTextTransferProtocol),是一套计算机在网络中通信的一种规则。
在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层。HTTP是一种无状态的协议,意思是Web浏览器(客户端)和Web服务器之间不需要建立持久的链接。整个过程就当是一个客户端向服务器发送一个请求(Request),然后Web服务器返回一个响应(Response),之后就关闭了。
HTTP定义的事物处理由以下四个步骤组成:
1.客户端和Web服务器建立连接
2.客户端发送HTTP请求
3.服务器端收客户端的HTTP请求,生成HTTP响应回发
4.服务器端关闭连接。我会的解析回发响应。恢复页面。
HTTP的格式如下:
http://bost(主机)[" : " post(端口)][abs_path(绝对路径)]
HTTP协议的特点:
1.支持客户/服务器模式
2.简单快速
3.灵活(允许被传输任意类型)
4.无连接(仅仅只是发送请求的时候连接,响应完毕就关闭连接)
5.无状态(可以传送任何方法和路径,并且不会处理事务和保存)
-------------------------------------------分割一个线-----------------------------------------------
发送请求信息:
1.请求行:
请求行是一个ASCII文本行,由三个标记组成:HTTP方法、请求的URL、HTTP版本,中间用空格分开。列如:
GET/LookBook/index.html HTTP/1.0
在HTTP版本1.1中,定义有八种可能的HTTP请求方法:
1.GET:用于向服务器检索资源
2.POST:用于向服务器发送数据,并且要求指定的URL处理
3.HEAD:与GET方法相同,服务器只返回状态行和标头,并不返回请求文档
4.PUT:请求服务器保存请求数据作为指定URL新内容
5.DELETE:请求服务器删除URL中命名的资源
6.OPTIONS:请求关于服务器支持的请求方法信息
7.TRACE:请求Web我完全反馈HTTP请求和其标头
8.CONNECT:己文档化但当前为实现的一个方法,预留做隧道处理
以下方式的HTTP请求为GET方法:
1.在浏览器地址栏输入URL
2.在当前网页上点击HTML连接
3.在HTML表单中设置表单的method='get' 并且提交表单
4.在HTML表单中没有设置表单的method属性 提交表单(如果不设置method属性,默认为get方法)
2.请求头:
HTTP协议使用HTTP头来传递请求的元信息、HTTP是一个用冒号分隔的名称/值对,冒号前面是HTTP的名称,后面是HTTP的值。
3.空行:
发送回车符合退行,通知服务器以下不再有请求头
4.消息体:
HTTP请求中带有查询字符串时,如果是CET方法,查询字符串或者表单数据附加在请求行中,消息体没有内容。如果是POST方法,查询字符串或表单数据就添加在消息体中。
-------------------------------------------分割一个线-----------------------------------------------
回送响应信息:
HTTP响应包括:状态行、响应头、消息体以及分割消息头和响应头的一个空行
1.状态行:
响应状态码是一个三位的数字,分为以下几种:
1. 1xx:信息,请求收到,继续处理
2. 2xx:成功,行被成功的接受,理解和采纳
3. 3xx:重定向(解决不了的问题,从新解决),为了完成请求,必须进一步执行的动作
4. 4xx:客户端错误,请求包含语法错误或请求无法实现
5. 5xx:服务器错误,服务器不能实现一种明显无效的请求
常见的响应码:
200:客户端请求成功
400:客户端请求语法错误,不能被服务器所理解
401:请求未经授权
403:服务器收到请求,拒绝服务
404:请求资源不存在
500:服务器发生了不可预知的错误
503:服务器不能处理,以后可能恢复
2.响应头:
在响应头中,最重要HTTP头是Content-Type,它指定MIME类型。
3.空白行:
最后响应头之后是一个空行,发送回车符合退行,表明以下不再有响应头
4.消息体:
要发送客户端的HTML文档或其他要显示的内容等。Wed服务器要把发送给客户端的文档信息放在消息体中
-------------------------------------------分割一个线-----------------------------------------------
Web服务器的缺陷(原始Web服务器):
Web服务器是被实际用来向客户端提供HTTP服务的,它只能向客户端提供静态网页内容。假如我们需要动态页面(在发出请求之前还不存在的动态创建的页面),而且还希望把通过表单或者查询字符串提交的数据保存袋服务器上(即写一个文件或者数据库中),对此原始Web 无法解决。
服务器端网页编程:
包括最早的CGI技术、微软的ASP和ASP.NET技术、基于Java的Servlet/JSP技术等。
最早的解决方案CGI:
CGI,即通过网关接口(Commom Gateway Interface),是最早用于创建动态服务器端内容的一种技术。CGI成功为创建动态网页的标准方法。CGI的最大优点是他可以使用Shell、Perl、C、PHP、Python等编写。但是并不完美。在CGI运行时,每次请求回会打开一个CGI进程的方式严重消耗了服务器的内存。
JAVA的解决方案:
在Java的世界里,Servle以及Web容器,被设计用来解决CGI的问题,为Web开发者创建一个健壮的服务器环境。
Servle:
Servle是一个与平台无关的java类,能够编译成平台中立的字节码,从而被基于java技术的Web服务器动态装载和运行。
每一个WEB应用都有必须要有WEB-INF目录、web.xml文件、classes目录。即:
AppName
AppNameWEB-INF
AppNameWEB-INFWeb.xml
AppNameWEB-INFclasses