1.1 Web应用程序开发基础知识
WWW(World Wide Web)即全球广域网,也称为万维网。它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统,是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。万维网并不等同互联网,万维网只是互联网提供的服务之一。
从表现形式上来看,基于Web的应用程序是许多网页的集合,这些网页可以与其他网页进行交互,也可以与Web服务器上的其他各种资源(如数据库或Web服务)进行交互。
为了规范这种Web页面之间的交互流程,保证客户端和服务器端之间能很好地通信,在网络上必须采用一个规范性的协议(HTTP通信协议)来定义各种Web应用上的服务细节。
1.1.1 HTTP通信协议概述
HTTP(Hypertext Transfer Protocol)通信协议是目前在Internet上应用最广泛的通信协议之一。HTTP通信协议允许客户端向服务器提出基于HTTP格式的“请求”(Request),而服务器解析请求和完成请求的处理后,将根据实际的处理结果向请求端传回基于HTTP的“回应”(Response)。根据HTTP通信协议,客户端和服务器端的交互主要由以下四个步骤组成。
(1)当客户端向Web服务器发出请求时,Web服务器将会为该客户开启一个新的连接。
(2)通过这个连接,用户(服务请求端)可以将HTTP请求通过网络,传送给Web服务器。
(3)当Web服务器收到HTTP请求时,将根据请求内容进行相应的处理,并将处理结果包装成HTTP回应。
(4)服务器会将HTTP回应传送给用户。只要用户接收到HTTP回应,Web服务器就会关闭同客户端的连接,从而结束本次通信。
图1-1说明了客户端与Web服务器通信的整个流程,从图中可以看到,HTTP通信协议用来规范在客户端和服务器之间的数据传输格式,更重要的是,HTTP通信协议定义了从客户端发送HTTP请求到服务器端返回HTTP响应的整个流程。
图1-1 客户端(客户)与服务器端(Web服务器)之间的交互关系
1.1.2 传统的Web应用程序
目前,大多数的Web应用程序都是基于HTTP通信协议的,即一个典型的基于Web的服务器和客户端应用程序必须具备“接受客户端的请求”和“将处理结果回应给客户端”这两种能力。
在Web开发的起步阶段,程序员是用CGI(Common Gateway Interface,公共网关接口)程序来编写Web应用程序组件的,即Web服务器之间及客户端和服务器之间是通过CGI来互相交换信息。当客户端向Web服务器送出一个HTTP请求时,Web服务器将根据其中的CGI内嵌服务程序,执行如下动作:
如果客户端请求的内容是静态的HTML网页数据(即这些数据不是从数据库等数据源动态获取生成),Web服务器将会根据事先编写好的处理程序自行处理,产生回应信息并返回。
如果涉及动态数据(如查询在服务器上的数据),则由内嵌的CGI程序负责处理,处理结束后,CGI程序会先把结果回送给Web服务器,再由Web服务器传回用户端。
整个流程如图1-2所示。
图1-2 CGI程序基本运行流程
从实际的运行效果来看,虽然CGI程序能在一定程度上解决客户端与服务器端之间的交互问题,但是基于CGI程序本身的特点,这样的开发模式隐含了一些可能导致系统效率降低和项目可维护性变差的缺点。
从运行方式上来看,CGI程序属于“操作系统进程”,因此对于每个HTTP的请求,服务器端都必须对应地开启一个CGI的服务,这加重了系统整体资源负担。
CGI程序通常不具有“平台独立性”,它甚至可以用多种语言来编写,如果转换到其他系统平台,程序可能要做适当的改写或重写。
最为重要的是,CGI无法很好地形成一种通用的规范。事实上,不同类型的服务器CGI代码往往从请求风格到服务方式,都是不同的。
在实际的应用中,以上三个特点确实影响到Web应用程序的执行性能,因此需要一个能够取代CGI的Web开发技术,来满足“低负载、高重用和规范统一”等通用要求。
JSP技术恰好可以完美地取代CGI程序,Java的“平台无关性”可以保证用JSP编写出来的代码能够在多个平台之间很好地迁移。同时,JSP语言是基于Java虚拟机的,不会对系统产生严重的资源负载。而且,不同平台上的Java语言及其虚拟机均采用了同一类标准(基于Java的标准),因此,JSP可以满足“规范统一”这个要求。
1.1.3 Web结构
Web主要由两个部分组成,其结构如图1-3所示:提供Web信息服务的服务器端网站及向网站提出信息内容浏览要求的客户端浏览器。服务器端网站存放包含各种形态的多媒体信息网页,客户端主要包含各种可以浏览网页内容的浏览器软件,目前通用的浏览软件为Windows操作系统的Internet Explorer(IE)浏览器。
图1-3 Web结构
了解Web结构的初步概念后,下面继续针对其中几个重要的技术内容进行讲解。
1. 客户端与浏览器
要打开和浏览网络上的网页文件,必须通过浏览器程序,如IE、Netscape等。而使用浏览器打开网页的这一端,称为客户端。因为网站为上线用户提供打开网页的服务,因此用户也可称为客户。
浏览器的功能主要是解释HTML文件中的内容,若HTML中同时含有客户端执行的描述语言,例如VBScript或JavaScript,则浏览器同样会对其进行解释的操作,最后将整份网页的执行结果呈现在用户的浏览器窗口中。
2. 服务器端与服务器
与客户端相比,提供浏览网页服务的一方称作“服务器端”,而用来放置这些网页信息的计算机,则称为服务器。
服务器的功能并不只是单纯地存放网页信息,任何可提供网络服务的计算机都是服务器。例如,提供网页信息的称为网页服务器,而提供文件上传与下载功能的则称为文件服务器。
3. 通信协议
在网络上要能彼此互通信息就必须遵循一定的沟通方式,这些沟通方式即所谓的通信协议,表1-1所示为WWW中较为常用的通信协议。
表1-1 WWW常用通信协议
只有双方都使用相同的通信协议,才能建立起连接通道。
4. 全球资源定位器—— URL
URL的英文全称为Uniform Resource Locator(全球资源定位器),是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置及浏览器应该怎么处理它。当用户想要打开位于远程网站主机上的网页时,必须指定其URL位置,也就是通常所讲的网址,它从左到右由下述部分组成。
Internet资源类型(scheme):指出WWW客户程序用来操作的工具。如“http://”表示WWW服务器,“ftp://”表示FTP服务器,“gopher://”表示Gopher服务器,而“new:”表示Newgroup新闻组。
服务器地址(host):指出WWW页所在的服务器域名。
端口(port):有时需要,对某些资源的访问来说,需给出相应的服务器提供端口号。
路径(path):指明服务器上某资源的位置(其格式与DOS系统中的格式一样,通常由“目录/子目录/文件名”这样的结构组成)。与端口一样,路径并非总是需要的。
URL地址格式排列为:scheme://host:port/path。例如,http://www.oracle.com/technetwork/java/index.html就是一个典型的URL地址。当浏览器接收了用户输入的一个网址后,便会根据其中所提供的信息,向服务器提出网页浏览请求。