简介
Web应用是基于HTTP协议的,Web应用也被常常被称为B/S(Browser/Server,浏览器/服务器)应用,这是针对传统的C/S(Client/Server,客户端/服务器模式)模式而言的。但是Web应用其实也是一种客户端/服务器的应用,只不过客户端使用的是统一协议的浏览器而已。
传统的C/S结构是两层结构,客户端直接和数据库连接,这种模式存在着非常大的安全隐患,目前已经逐步消亡了。但是作为3层结构(UI—BizServer—DB)的结构会长期和B/S结构共存。
Web基本交互图
C/S模式的交互模型
l 客户端将数据传输给服务器
l 服务器将数据传递给客户端
Web交互的基本模型:
l 浏览器将数据传输给服务器
l 服务器将显示和操作代码传递给浏览器
Web应用开发基本原理
浏览器的作用
l 数据收集
l 传输协议
l 解释显示语言/解释脚本
l 响应用户操作
Web传输协议网络堆栈
Web应用开发基本原理
对于Web开发主要是使用Web应用层和HTTP层的协议进行开发的,Web应用层具有多种协议:
HTML:显示语言,使用统一的Marker Language解释客户端显示组件以及其摆放规则。
DHTML:HTML的对象模型,主要和脚本引擎一起提供页面操作/动态页面显示等功能。
CSS:界面风格描述,主要用于描述组件的特性。
Javascript/VBScript:脚本引擎主要用于结合DHTML提供页面操作/动态页面显示等功能。
VML:图形化建模语言。
在除了物理层的以下各层,Web服务器一般都能为应用服务提供相应的接口:
输入:
链路层:MAC地址
IP层:IP地址
TCP层:TCP端口
HTTP层:HTTP Headers(QueryString/Cookie /Accept-Type/Content-Type等)
Web应用层:ViewState/ Form服务器端组件状态等
输出:
HTTP层:HTTP Headers(QueryString/Cookie/Accept-Type/Content-Type等)
Web应用层:HTML/Javascript/HTC/xml/pic等
HTTP协议
Http协议格式
l URL格式
😕/< virtual path>?,
主要由几部分构成:
- protocol
在这里的协议是HTTP
- domain
一般的格式是<服务器>:<端口号>,如果没有端口号,HTTP缺省为80
- virtual path
虚拟路径,第一个字符是”/”,代表相对于服务器Web应用根的路径。
- queryString
参数值,以<名>:<值>模式的多个域的组合,域和域之间以”&”分割。注意:这里的每个域的名称在QueryString中可能不是唯一的。
l HTTP头
主要是指<名>:<值>模式的多个域的组合,域和域之间以回车(\r\n)分割,如果出现两个回车,就证明HTTP头已经结束。注意:HTTP域在HTTP头中不是唯一的。
l Form提交格式
以<名>:<值>模式的多个域的组合,域和域之间以”&”分割。注意:这里的每个域的名称在QueryString中可能不是唯一的。
l 请求(Request)
HTTP/
<http头>
method:主要有两种,一种是POST,一种是GET。通常POST会带Content-Length的HTTP头,用来传输数据。
url:访问服务器的虚拟路径,比如我们在浏览器中输入”http://localhost/webapp/webapp1.aspx”,那么虚拟路径是指”/webapp/webapp1.aspx”。
version:当前HTTP协议是1.1版本
content:如果HTTP头中存在Content-Length,则在content部分就会有对应长度的(字节为单位)内容。
l 回应(Response)
HTTP/
<http头>
version:当前HTTP协议是1.1版本
statusCode:服务器传回的访问的整数状态码,一般成功的是200或者201,跳转是302,服务器内部错误是500,请求错误是400,没有页面是404
statusDescription:状态描述,针对状态码的描述信息
content:和请求是一样的