第一部分
第1章 Web应用程序设计基础
1.1 Web技术概述
1.1.1 Internet基本概念
国际互联网(Internet)是20世纪发展最快,规模最大,涉及面最广的科技成果。多媒体网络技术的迅速发展,使人类真正进入了信息时代。早期的Internet技术发展的动力源于科学研究和军事目的,当时主要是为了方便研究人员互相传递文献资料等。随着全球科学技术的进步和商业需求的推动,尤其是1989年WWW(World Wide Web)发明后,Internet迅速进入各行各业、千家万户,成为现在人们学习、工作、交流、娱乐不可缺少的重要手段。进入21世纪,Internet又迅速地向着移动互联网发展,迅速地推动着物联网的发展。
Internet迅速改变着人类社会活动,为人类提供了全方位服务。传统的Internet提供的服务最常用的是WWW和E-mail的服务。WWW又称万维网,是建立在客户/服务器网络结构上的服务。因此我们需要了解什么是服务器端和客户端,还需要了解提供WWW网络服务的静态网页和动态网页的工作原理及其运行机制。
在计算机网络服务世界,凡是提供服务的一方称为服务器端(Server),而接受服务的一方称为客户端(Client)。比如,当大家在浏览新浪主页的时候,新浪主页所在的服务器就称为服务器端,而大家自己的计算机就称为客户端;局域网内提供打印服务的计算机是打印服务器,使用服务器所提供的打印服务的一方称客户端。当用户通过网络设备上网,在浏览器中输入网址向网站提出浏览网页要求和点击内容,这就产生请求(Request),网站接受用户请求后将要求的网页内容传输给用户,这称作响应(Re-sponse)。用户作为客户端接受了网站所提供的服务,网站则为服务器端响应用户请求提供了网页数据服务。
如果原来提供服务的服务器端接受了别的服务器端的服务,它相对于别的服务器端就成了客户端;如果原来接受服务的客户端为别的客户端提供服务,它相对于别的客户端就成了服务器端。例如,如果用户自己的计算机安装了WWW服务器软件,把自己的计算机当作服务器,别人(客户端)就可以通过网络访问用户的计算机。以上叙述服务器端和客户端是分别建立在两台机器上,它们构成主从关系。实际上,服务器端和客户端是可以建立在同一台机器上,在提供网页服务的机器上浏览本机所提供的网页,该机器既是服务器端又是客户端。例如,在调试程序时,往往把自己的计算机既当作服务器端,又当作客户端使用。
所谓静态网页,就是网页文件里没有程序代码,网页内容使用HTML标记语言,不需要服务器端执行的网页。这种网页一般文件后缀以.htm或.html存放。静态网页制成后内容就不会再变化,浏览这类网页,网站服务器不会执行任何程序就直接将静态内容传输给客户端的浏览器解读。如果要改变网页显示内容,就必须修改源代码,然后重新上传到服务器上。静态网页制作比较简单,利用FrontPage、Dreamweaver等软件就可以方便地生成,如简单的单位简介等页面。
所谓动态网页,就是网页文件不仅含有HTML标记,而且含有程序代码,需要被服务器端执行的网页。这种网页文件的后缀根据不同的程序设计语言使用不同的后缀名,如:.asp、.aspx、.php、.jsp等。用户浏览动态网页时,先由网站服务器执行相关程序后,然后将不同的执行程序结果下载给客户端的浏览器。服务器执行不同的程序下载不同的显示内容,产生动态效果。一般来说,动态网页制作比较复杂,需要用到ASP、ASP.NET、JSP或PHP等专门的动态网页设计工具。
B/S模式是Web兴起后的一种网络服务结构模式,如图1.1.1所示。在这种模式下客户端是瘦客户机,系统将客户端统一起来,把系统功能实现的核心部分集中放在服务器端,通过Web服务器处理实现复杂功能。也就是说,只需要在客户端的计算机上安装一个浏览器就可以浏览所有网站,而这样的浏览器称为Web浏览器。现在比较流行的Web浏览器主要有微软的IE浏览器、Firefox火狐浏览器、谷歌的Chrome浏览器、360安全浏览器等。这种模式显著地简化了系统的开发、维护和使用。B/S模式已经成为当今应用软件的首选体系结构。
图1.1.1 B/S模式
4.C/S模式
在C/S模式下,客户与服务器之间的关系就是进程之间服务和被服务的关系,在图1.1.2中,客户端通过客户程序向服务器端发出请求服务,服务器端收到客户端发出的请求服务后通过服务器程序向客户端提供服务,此时,客户端就得到相应的服务。C/S模式可以不依赖外网环境的应用软件开发,典型的客户机/服务器网络模式可以支持多用户的数据库管理系统。
图1.1.2 C/S模式
1.1.2 网络协议
网络协议是指计算机之间为了能正确地传送信息而对相关信息的传输顺序、信息格式和信息内容等方面做出的一组约定或规则。Internet是由分布世界各地各种不同类型的运行的计算机或计算机网络组成的一个全球性的大网络,它使用的网络协议是TCP/IP协议,凡是连入Internet的计算机都必须安装和运行TCP/IP协议软件。访问Web服务网站则使用超文本传输协议HTTP。
TCP/IP协议是一个协议族,其中最重要的是TCP协议和IP协议,因此,通称为TCP/IP协议。TCP/IP协议将网络分成4个层次:应用层、传输层、网络层和物理链路层。分别为用户提供各层不同的服务。
超文本传输协议HTTP是专门为Web设计的一种网络协议。它属于TCP/IP参考模型中的应用层协议,位于TCP/IP协议的顶层。Web浏览器和服务器用HTTP协议来传输Web文档,通过以下四个步骤完成访问Web服务网站的交互过程:
(1)客户与服务器建立链接;
(2)客户向服务器提出请求;
(3)服务器响应请求送回代码文件;
(4)客户和服务器断开链接。
1.1.3 IP地址、域名与URL
在国际互联网(Internet)上有成千上万台主机(Host),为了区分这些主机,人们给每台主机都分配了一个专门的“地址”作为标识,称为IP地址,它是主机在网上的身份证。IP是Internet Protocol(国际互联网协议)的缩写。各主机间要进行信息传递必须要知道对方的IP地址。每个IP地址的长度为32位(Bit),分4段,每段8位(1个字节),常用十进制数字表示,每段数字范围为1~254,段与段之间用小数点分隔。每个字节(段)也可以用十六进制或二进制表示。每个IP地址包括两个ID(标识码),即网络ID和宿主机ID。同一个物理网络上的所有主机都用同一个网络ID,网络上的一个主机(工作站、服务器和路由器等)相对应有一个主机ID。这样把IP地址的4个字节划分为2个部分,一部分用来标明具体的网络段,即网络ID;另一部分用来标明具体的节点,即宿主机ID。32位的IP地址又可分为五类,分别对应于A类、B类、C类、D类和E类IP地址。
(1)A类:一个A类IP地址由1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,后面7位为网络地址,其余24位为主机地址。A类地址允许组成126个网络,每个网络可包含1700万台主机。
(2)B类:B类地址用于中型到大型的网络。B类地址最高两位为10,后面14位为网络地址,其余16位为主机地址。B类地址允许16384个网络,每个网络可包含65000台主机。
(3)C类:C类地址最高三位为110,后面21位为网络地址,其余8位为主机地址。它允许200万个网络,每个网络254个主机,故网络多主机少,适用于小型本地网络(LAN)。
主机地址的末字节不使用0和255两个数。它们将作为保留字使用。
(4)D类:D类地址为多播地址,主要用在多播。
(5)E类:E类保留为以后用。
IP地址是面向网络的计算机地址标识符,记住许多计算机的IP地址对大多数人来说并非容易的事。所以TCP/IP协议中提供了域名服务系统(DNS),允许为主机分配面向用户的主机标识字符名称,即域名。这样每个主机都包含有IP地址和域名两个标识符,在网络通信时由DNS自动实现域名与IP地址的转换。例如,北京大学Web服务器的域名为http:/www.pku.edu.cn,对应的IP地址是162.105.129.12。
Internet中的域名采用分级命名,其基本结构如下:
计算机名.三级域名.二级域名.顶级域名
域名的结构在于DNS将整个Internet划分成多个域,称之为顶级域,并为每个顶级域规定了国际通用的域名。顶级域名划分采用了两种划分模式,即组织模式和地理模式。有7个域对应于组织模式,其余的域对应于地理模式,如cn代表中国,us代表美国等。
顶级域名分配如下:
互联网的域名管理机构将顶级域的管理权分派给指定的管理机构,各管理机构对其管理的域继续进行划分,即划分成二级域,并将二级域的管理权授予其下属的管理机构,依次类推,便形成了树型域名结构。由于管理机构是逐级授权的,所以最终的域名都得到了Internet的承认,成为Internet中的正式名字。
用户在Internet网上寻找分布在全球的WWW的信息,必须有一种说明该信息存放在哪台计算机的哪个路径下的定位信息。统一资源定位器URL(Uniform Resource Loca-tor)就是用来确定某信息具体位置的方法。
实际上,URL的概念类似要指定一个人的身份定位,就像要说明他的国别、地区、城镇、街道、门牌号一样,URL指定Internet资源要说明它位于哪台计算机的哪个目录中。URL通过定义资源位置的抽象标识来定位网络资源,其格式如下:
对于Internet,<信息服务类型>是指Internet的协议名,包括ftp(文件传输服务)、http(超文本传输服务)、gopher(gopher服务)、mail(电子邮件地址)、telnet(远程登录服务)、news(提供网络新闻服务)、wais(提供检索数据库信息服务)。
<信息资源地址>指定一个网络主机的域名或IP地址。在有些情况下,主机域名后还要加上端口号,域名与端口号之间用冒号(:)隔开。这里的端口是操作系统用来辨认特定信息服务的软件端口。一般情况下,服务器程序采用标准的保留端口号,因此,用户在URL中可以省略。以下是一些URL的例子:
1.1.4 Web工作原理
Web运行机制是一种基于客户机/服务器的体系结构,客户机向服务器发送请求,要求执行某项任务,而服务器执行此项任务,并向客户机返回响应。Web客户程序叫作浏览器,而浏览器程序基本上都是标准化的。因此,Web体系结构可以称为浏览器/服务器结构。
当在浏览器里输入一个静态网页网址后,就向服务器端提出了一个浏览网页的请求。服务器端接到请求后,就会找到用户要浏览的静态网页文件,然后发送给用户。这种方式基于静态网页的工作原理。
动态网页的工作原理与静态网页有很大的不同。当用户在浏览器里输入一个动态网页网址后,就向服务器端提出了一个浏览动态网页的请求。服务器端接到请求后,首先会找到用户要浏览的动态网页文件,并执行网页文件中的程序代码,然后将返回运行程序结果的动态网页转化为标准的静态网页,最后将静态网页发送给用户。
1.1.5 常见网络开发工具
当前主要的动态网络开发工具有ASP、JSP、ASP.NET和PHP。
1.ASP
ASP(Active Server Pages)是微软推出的用以取代CGI(Common Gateway Interface)的动态服务器网页技术。可以在Windows NT、Windows 2000、Windows XP上运行。它对客户端没有任何特殊的要求,只要有一个普通的浏览器就行。
ASP文件就是在普通的HTML文件中嵌入VBScript或JavaScript脚本语言。当客户请求一个ASP文件时,服务器端就会运行ASP文件中的脚本代码,并转化为标准的HTML文件,然后发送到客户端。ASP提供了非常有用的内部对象和内部组件,利用它们可以轻松地实现表单上传、存取数据库等功能。ASP可以使用第三方提供的专用组件实现发送E-mail、文件上传等功能,还可以利用VC或VB开发自己的组件。由于ASP具有强大的组件扩展等开放性,因此说ASP几乎可以实现任何功能。
ASP最大优点就是简单易学,因为这个优点,又有微软的强大支持,所以ASP使用非常广泛,很多大型的站点都是用ASP开发的。ASP的缺点主要是不能跨平台,一般只能在Windows系列的操作系统上运行。
2.JSP
JSP的全称是Java Server Pages,由Sun微系统公司(Sun Microsystem Inc.)提出,联合多家公司共同推出的一种动态网页技术。该技术整合已有的Java编程环境(如Java Servlet等),产生了一个全新的网络程序语言。JSP可以运行在几乎所有的服务器系统上,包括WindowsNT、Windows2000、UNIX、Linux等。当然,需要安装JSP服务器引擎软件。Sun微系统公司提供了免费的JDK、JSDK和JSWDK供Windows和Linux系统使用。JSP也是在服务器端运行的,对客户端浏览器要求很低。
和ASP嵌入思想相同,JSP其实就是将Java程序片段和JSP标记嵌入普通的HTML文档中。当客户端访问一个JSP网页时,将执行其中的程序片段,然后返给客户端标准的HTML文档。在JSP下,当第一次请求JSP文件时,该文件将被编译成Servlet并由Ja-va虚拟机执行,以后就不用再编译了,编译后运行,能够提高执行效率,这是它的另外一大特点。JSP也能完成目前的动态网页要求的上传表单、数据库操作等绝大部分功能。
JSP的主要优点是开放的、跨平台的结构,几乎可以在所有的操作系统上运行。而且它采用编译后运行效率高。JSP的主要缺点是,相对于ASP来说,必须先学习Java语言,此外它的运行环境配置起来也比较复杂。
3.ASP.NET
ASP. NET是微软在ASP 3.0的基础上推出的基于架构的动态网页设计语言。与ASP相比,它不是简单的升级,而是进行了彻底的变革。
网络编程技术朝着提供网络服务思想的方向发展,这使得许多程序设计师和用户都希望有一个清晰完善的基础架构来建立Web Services(因特网服务)。.NET Framework正是为了满足这个需求而提供的基础架构。.NET Framework提供了应用程序模型及关键技术,让开发人员容易用原有的技术来产生和部署,并继续发展具有高安全、高稳定和高延展的Web Services。.NET Framework以松散的方式来栓锁Web Services这种形态的组件。这样让开发人员非常容易地发展出强而有力的Web服务组件,提高了整体的安全性及可靠性,并大大地增加了系统的延展性。.NET Framework的目的是让建立Web Serv-ices以及因特网应用程序的工作变得简单,它包括以下三大部分:Common Language Runtime(CLR,所有.NET程序语言公用的执行时的组件);共享对象类别库(提供所有.NET程序语言所需要的基本对象);重新以组件的方式写成的ASP.NET。
4.PHP
PHP在1994年以前仅作为一个简单提供留言本、计数器网页功能的个人开发工具。经1997年重新编写解析器以及后来改进发展,形成了今天流行的功能完善的PHP5。
PHP程序可以运行在UNIX, Linux或者Windows操作系统下,对客户端浏览器也没有特殊要求,不过它的运行环境需要比较复杂的安装。PHP、MySQL数据库和Apache Web服务器是一个很优秀的组合。PHP也是将脚本描述语言嵌入HTML文档中,它大量采用了C、Java和Perl语言的语法,并加入了各种PHP自己的特征。它也是在服务器端执行,转化为标准的HTML文件然后发送到客户端的。可以完成目前网络上的大部分功能,包括表单上传、存取数据库、图像处理等。
PHP的优点主要是免费和开放源代码,语言简单易掌握,深受编程高手喜欢,对于许多要考虑运行成本的商业网站来说也显得尤为重要。PHP的缺点主要是缺乏大公司的支持,运行环境配置相对复杂些。