第1章 Java Web应用开发概述
第一章 Java Web应用开发概述
知识点:
(1) 了解C/S结构和B/S结构
(2) 理解Web应用程序的工作原理
(3) 了解Web应用的客户端应用技术
(4) 了解Web应用的服务器端应用技术
(5) 了解Java Web 成功案例
(6) 了解 Java Web 开发的常用网上资源
本章概述:
随着网络技术的迅猛发展,国内外的信息化建设已经进入了以Web应用开发为核心的阶段。与此同时,Java语言也在不断完善优化,更适合开发Web应用。因此,越来越多的程序员或编程爱好者走上了Java Web 应用开发之路。
1.1 程序开发体系结构
随着网络技术的不断发展,单机的软件程序已难以满足网络计算的需要。为此,各种各样的网络程序开发体系结构应运而生。其中,运用最多的网络应用程序开发体系结构可以分为两种,一种是基于客户端/服务器的C/S结构,另一种是基于浏览器/服务器的B/S结构。下面进行详细介绍。
1.1.1 C/S体系结构介绍
C/S是Client/Server的缩写,即客户端/服务器结构。在这种结构中,服务器通常采用高性能的PC机或工作站,并采用大型数据库系统(如Oracle或SQL Server),客户端则需要安装专用的客户端软件,如图1.1所示。这种结构可以充分利用两端硬件环境的优势,将任务合理地分配到客户端和服务器,从而降低了系统的通信开销。在2000年以前,C/S结构占据网络程序开发领域的主流。
注:甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型数据库软件公司。总部位于美国加州红木城的红木岸(Redwood Shores),现时首席执行官为公司创办人劳伦斯·埃里森(Lawrence J. Ellison)。
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
SQL:structured query language 结构化查询语言
20世纪约70年代 一间名为Ampex的软件公司,正为中央情报局设计一套名叫Oracle的数据库,埃里森是程序员之一。
1977年埃里森与同事Robert Miner创立“软件开发实验室”(Software Development Labs),当时IBM发表“关系数据库”的论文,埃里森以此造出新数据库,名为甲骨文。
1978年 公司迁往硅谷,更名为“关系式软件公司”(RSI)。RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。美国中央情报局想买一套这样的软件来满足他们的需求,但在咨询了IBM公司之后发现IBM没有可用的商用产品,他们联系了RSI。于是RSI有了第一个客户。
最先提出“关系数据库”的IBM采用RSI的数据库。1982年再更名为甲骨文(Oracle)。
1.1.2 B/S体系结构介绍
B/S是Brower/Server的缩写,即浏览器/服务器结构。在这种结构中,客户端不需要开发任何用户界面,而统一采用如IE和Firefox(火狐)等浏览器,通过Web浏览器向Web服务器发送请求,由Web服务器进行处理,并将处理结果逐级传回客户端,如图1.2所示。这种结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,从而节约了开发成本,是一种全新的软件体系结构。这种体系结构已经成为当今应用软件的首选体系结构。
说明:B/S由美国微软公司研发,C/S由美国Borland公司最早研发。
注:Borland公司是一家成立于 1983 年的软件公司,总部设在美国加州的Scotts Valley,是领先全球的软件交付最优化(SDO)平台独立解决方案供应商,业务遍及全球 。
1.1.3 两种体系结构的比较
C/S结构和B/S结构是当今世界网络程序开发体系结构的两大主流。目前,这两种结构都有自己的市场份额和客户群。但是,这两种体系结构又各有各的优点和缺点,下面将从以下3个方面进行比较说明。
- 开发和维护成本方面
C/S结构的开发和维护成本都比B/S高。采用C/S结构时,对于不同客户端要开发不同的程序,而且软件的安装、调试和升级均需要在所有的客户机上进行。例如,如果一个企业共有10个客户站点使用一套C/S结构的软件,则这10个客户站点都需要安装客户端程序。当这套软件进行了哪怕很微小的改动后,系统维护员都必须将客户端原有的软件卸载,再安装新的版本并进行配置,最可怕的是客户端的维护工作必须不折不扣地进行10次。若某个客户端忘记了这样的更新,则该客户端将会因软件版本不一致而无法工作。而B/S结构的软件,则不必在客户端进行安装及维护。如果将前面企业C/S结构的软件换成B/S结构,则在软件升级后,系统维护员只需要将服务器的软件升级到最新版本,对于其他客户端,只要重新登录系统,即可使用最新版本的软件。
- 客户端负载
C/S结构的客户端不仅负责与用户的交互,收集用户信息,而且还需要完成通过网络向服务器请求对数据库、电子表格或文档等信息的处理工作。由此可见,应用程序的功能越复杂,客户端程序也就越庞大,这也给软件的维护工作带来了很大的困难。而B/S结构的客户端把事务处理逻辑部分交给了服务器,由服务器进行处理,客户端只需要进行显示,这样将使应用程序服务器的运行数据负荷较重,一旦发生服务器“崩溃”等问题,后果将不堪设想。因此,许多单位都备有数据库存储服务器,以防万一。
- 安全性
C/S结构适用于专人使用的系统,可以通过严格的管理派发软件,达到保证系统安全的目的,这样的软件相对来说安全性比较高。而对于B/S结构的软件,由于使用的人数较多且不固定,相对来说安全性就会低些。
由此可见,B/S相对于C/S来说具有更多的优势,现今大量的应用程序开始应用B/S结构,许多软件公司也争相开发B/S版的软件,也就是Web应用程序。随着Internet的发展,基于HTTP协议和HTML标准的Web应用呈几何数量级的增长,而这些Web应用正是由各种Web技术所开发的。
注:HTTP(Hyper Text Transfer Protocol) 超文本传输协议
HTML的全称是Hypertext(超文本(含有指向其它文本文件链接的文本)) Markup Language,即超文本标记语言。
1.2 Web应用程序的工作原理
Web应用程序大体上可以分为两种,即静态网站和动态网站。早期的Web应用主要是静态页面的浏览,即静态网站。这些网站使用HTML语言来编写,放在Web服务器上,用户使用浏览器通过HTTP协议请求服务器上的Web页面,服务器上的Web服务器将接收到的用户请求处理后,再发送给客户端浏览器,显示给用户。整个过程如图1.3所示。
随着网络的发展,很多线下业务开始向网上发展,基于Internet的Web应用也变得越来越复杂,用户所访问的资源已不再是只局限于服务器上保存的静态网页,更多的内容需要根据用户的请求动态生成页面信息,即动态网站。这些网站通常使用HTML语言和动态脚本语言(如JSP、ASP或是PHP等)编写,并将编写后的程序部署到Web服务器上,由Web服务器对动态脚本代码进行处理,并转化为浏览器可以解析的HTML代码,返回给客户端浏览器,显示给用户。整个过程如图1.4所示。
说明:初学者经常会错误地认为带有动画效果的网页就是动态网页,其实不然。动态网页是指具有交互性、内容可以自动更新的网页,并且内容会根据访问的时间和访问者而改变。这里所说的相互性,是指网页可以根据用户的要求动态地改变或响应。
由此可见,静态网站类似于十几年前研制的手机,这种手机只能使用出厂时设置的功能和铃声,用户自己并不能对其铃声进行添加和删除等;而动态网站则类似于现在研制的手机,用户在使用这些手机时,不再是只能使用机器中默认的铃声,而是可以根据自己的喜好任意设置。
1.3 Web应用技术
在开发Web应用程序时,通常需要应用客户端和服务器两方面的技术。其中,客户端应用的技术主要用于展现信息内容,而服务器端应用的技术则主要用于进行业务逻辑的处理和与数据库的交互等。下面进行详细介绍。
1.3.1 客户端应用的技术
在进行Web应用开发时,离不开客户端技术的支持。目前,比较常用的客户端技术包括HTML语言、CSS、Flash和客户端脚本技术,下面进行详细介绍。
(1) HTML语言
HTML语言是客户端技术的基础,主要用于显示网页信息,由浏览器解释执行,它不需要编译。HTML语言简单易用,它在文件中加入标签,使其可以显示各种各样的字体、图形及闪烁效果,还增加了结构和标记,如头元素、文字、列表、表格、表单、框架、图像和多媒体等,并且提供了与Internet中其他文档的超链接。例如,在一个HTML页中,应用图像标记插入一个图片,可以使用如图1.5所示的代码,该HTML页运行后的效果如图1.6所示。
说明:HTML语言不区分大小写,这一点与Java不同,例如图1.5中的HTML标记<body></body>也可以写为<BODY></BODY>。
(2) CSS
CSS是一种叫做样式表(Style Sheet)的技术,也有人称之为层叠样式表(Cascading Style Sheet)。在制作网页时采用CSS样式,可以有效地对页面的布局、字体、颜色、背景和其他效果实现更加精确的控制。只要对相应的代码做一些简单的修改,就可以改变整个页面的风格。CSS大大提高了开发者对信息展现格式的控制能力,特别是在目前比较流行的CSS+DIV布局的网站中,CSS的作用更是举足轻重。例如,在“心之语许愿墙”网站中,如果将程序中的CSS代码删除,将显示如图1.7所示的效果;而添加CSS代码后,将显示如图1.8所示的效果。
注:DIV是层叠样式表中的定位技术,全称DIVision,即为划分。有时可以称其为图层。DIV在编程中又叫做整除,即只得商的整数。 DIV元素是用来为HTML(标准通用标记语言下的一个应用)文档内大块(block-level)的内容提供结构和背景的元素。
技巧:在网页中使用CSS样式不仅可以美化页面,而且可以优化网页速度。因为CSS样式表文件只是简单的文本格式,不需要安装额外的第三方插件。另外,由于CSS提供了很多滤镜效果,从而避免使用大量的图片,这样将大大缩小文件的体积,提高下载速度。
(3) Flash
Flash是一种交互式矢量动画制作技术,它可以包含动画、音频、视频以及应用程序,而且Flash文件比较小,非常适合在Web上应用。目前,很多Web开发者都将Flash技术引入到网页中,使网页更具表现力。特别是应用Flash技术实现动态播放网站广告或新闻图片,并且加入随机的转场效果,如图1.9所示。
(4) 客户端脚本技术
客户端脚本技术是指嵌入到Web页面中的程序代码,这些程序代码是一种解释性的语言,浏览器可以对客户端脚本进行解释。通过脚本语言可以实现以编程的方式对页面元素进行控制,从而增加页面的灵活性。常用的客户端脚本语言有JavaScript和VBScript。目前,应用较为广泛的客户端脚本语言是JavaScript脚本,它是Ajax的重要组成部分。在第3章将对JavaScript脚本语言进行详细介绍。
注: AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。国内翻译常为“阿贾克斯”和阿贾克斯足球队同音。
Asynchronous [ə'sɪŋkrənəs; eɪ-] adj. [电] 异步的;不同时的;不同期的
1.3.2 服务器端应用的技术
在开发动态网站时,离不开服务器端技术,目前,比较常用的服务器端技术主要有CGI、ASP、PHP、ASP.NET和JSP。下面进行详细介绍。
(1) CGI
CGI是最早用来创建动态网页的一种技术,它可以使浏览器与服务器之间产生互动关系。CGI的全称是Common Gateway Interface,即通用网关接口。它允许使用不同的语言来编写适合的CGI程序,该程序被放在Web服务器上运行。当客户端发出请求给服务器时,服务器根据用户请求建立一个新的进程来执行指定的CGI程序,并将执行结果以网页的形式传输到客户端的浏览器上显示。CGI可以说是当前应用程序的基础技术,但这种技术编制方式比较困难而且效率低下,因为每次页面被请求时,都要求服务器重新将CGI程序编译成可执行的代码。在CGI中使用最为常见的语言是C/C++、Java和Perl(Practical Extraction and Report Language,文件分析报告语言)。
(2) ASP
ASP(Active Server Page)是一种使用广泛的动态网站开发技术。它通过在页面代码中嵌入VBScript或JavaScript脚本语言来生成动态的内容,在服务器端必须安装适当的解释器后,才可以通过调用此解释器来执行脚本程序,然后将执行结果与静态内容部分结合并传送到客户端浏览器上。对于一些复杂的操作,ASP可以调用存在于后台的COM组件来完成,因此COM组件极大地扩充了ASP的能力。但也正因为过于依赖本地的COM组件,ASP技术主要用于Windows NT平台中,且Windows本身存在的问题都会映射到它的身上。当然,该技术也存在很多优点,简单易学,并且ASP与微软的IIS捆绑在一起,在安装Windows操作系统的同时安装上IIS,即可运行ASP应用程序。
注:COM:组件对象模型(Component Object Model)
IIS:abbr. 互联网信息服务(Internet Information Services)
(3) PHP
PHP来自于Personal Home Page一词,但现在的PHP已经不再表示名词的缩写,而是一种开发动态网页技术的名称。PHP语法类似于C,并且混合了Perl、C++和Java的一些特性。PHP是一种开源的Web服务器脚本语言,与ASP一样可以在页面中加入脚本代码来生成动态内容。对于一些复杂的操作可以封装到函数或类中。在PHP中提供了许多已经定义好的函数,例如提供的标准的数据库接口,使得数据库连接方便,扩展性强。PHP可以被多个平台支持,但被广泛应用于UNIX/Linux平台。由于PHP本身的代码对外开放,并且经过许多软件工程师的检测,因此到目前为止该技术具有公认的安全性能。
(4) ASP.NET
ASP.NET是一种建立动态Web应用程序的技术。它是.NET框架的一部分,可以使用任何.NET兼容的语言来编写ASP.NET应用程序。使用Visual Basic.NET、C#、J#、ASP.NET页面(Web Forms)进行编译,可以提供比脚本语言更出色的性能表现。Web Forms允许在网页基础上建立强大的窗体。当建立页面时,可以使用ASP.NET服务端控件来建立常用的UI元素,并对它们编程来完成一般的任务。这些控件允许开发者使用内建可重用的组件和自定义组件来快速建立Web Forms,使代码简单化。
注: .NET是微软下一代的操作平台,它允许人们在其上构建各种应用方式,使人们尽可能通过简单的方式,多样化地、最大限度地从网站获取信息,解决网站之间的协同工作,并打破计算机、设备、网站、各大机构和工业界间的障碍--即所谓的"数字孤岛",从而实现因特网的全部潜能,搭建起第三代互联网平台。后缀为net是网络服务公司,为个人或商业提供服务。
(5) JSP
JSP(Java Server Page)是以Java为基础开发的,所以它沿用Java强大的API功能。JSP页面中的HTML代码用来显示静态内容部分,嵌入到页面中的Java代码与JSP标记用来生成动态的内容部分。JSP允许程序员编写自己的标签库来完成程序的特定要求。JSP可以被预编译,提高了程序的运行速度。另外,JSP开发的应用程序经过一次编译后,便可随时随地运行。所以在绝大部分系统平台中,代码无须做修改,即可在支持JSP的任何服务器中运行。
1.4 Java Web成功案例
Java语言具有很多优点,例如面向对象、跨越平台、安全性高等,很多大型企业级的应用都采用Java Web进行开发。目前,Java Web开发的项目已经有很多成功案例,它们被应用于实际生活中的各行各业,例如清华大学的本科招生网、金网在线网等,如图1.10和图1.11所示。
还有一些涉及安全级别非常高或需要多平台运行的,以银行类的项目应用较多,例如中国工商银行网站、中国光大银行网站、中国农业银行网站、中国建设银行网站、交通银行网站和中国邮政储蓄银行网站等,这些网站都应用了Java Web技术,其页面效果如图1.12-图1.17所示。
以上的这些案例只是一部分代表,应用Java Web开发的项目还有很多,其成功案例数不胜数。
1.5 常用网上资源
为了方便读者学习,下面推荐一些学习Java Web应用开发的相关资源。使用这些资源,可以帮助读者找到精通Java Web应用开发的捷径。
1.6 小结
本章首先介绍了网络程序开发的体系结构,并对两种体系结构进行了比较,接着介绍了Web应用开发所采用的体系结构。然后详细介绍了静态网站和动态网站的工作流程,并对Web应用技术进行了简要介绍,使读者对Web应用开发所需的技术有所了解,最后介绍了Java Web网站的成功案例,及常用网上资源的URL地址。