第1章 Web应���开发概览
本章从Web开发的基础讲起,将Web开发的来龙去脉展现给各位读者。同时读者还将了解Web应用中采用MVC模式的根本原因以及MVC模式在Web开发框架中的发展现状,Web应用开发的各种开源框架及其比较,Struts 2**特性介绍。几种流行的开源框架和Struts2的比较,明确Struts 2的优缺点,使Web开发应用更具有针对性。
1.1 Web应用与Web开发框架
1.1.1 Web应用开发历程
Java技术是目前流行的Web开发语言,特别是基于J2EE平台的Java web开发模式已经被广泛使用,用户接触的很多动态网站都是采用了Java技术开发的。而Java web开发技术的发展是和Internet、浏览器的发展密不可分的。
Internet是一个遵循一定协议自由发展的国际互联网,它利用覆盖全球的通信系统使各类计算机网络及个人计算机联通,从而实现智能化的信息交流和资源共享。
Internet早已从*初学术科研网络变成了一个拥有众多商业用户、政府部门、机构团体和个人的综合的计算机信息网络。在发展规模上,目前Internet已经是世界上规模*大、发展*快的计算机互联网。TCP/IP协议簇是目前Imemet主流网络协议,它可提供任意互联的网络间的通信,几乎所用的网络操作系统都支持TCP/IP协议簇。在TCP/IP协议簇中,Web服务以其使用的方便性占据了TCP/IP应用的绝大部分。Web服务所采用的HTTP位于应用层,如同TCP/IP成为事实上的标准Imemet网络协议一样,HTTP所支持的Web应用成为Intemct的*主要应用有一定的历史机遇和偶然性,而这种偶然性在很大程度上与浏览器的发展密不可分,浏览器的发展在一定程度上也决定了web技术的发展。
提到Web浏览器,大多数人都会想到无处不在的微软公司的Intemet ExplOrer,简称IE,直到*近像Firefox、Safari和Opera之类的浏览器推出,这种情况才稍有改观。1993年,堪萨斯大学开发人员编写了一个基于文本的浏览器,叫做Lynx。1994年,挪威奥斯陆的一个小组开发了Opera,到1996年这个浏览器得到了广泛使用。1994年12月,Netscape发布了Mozilla的1.0版,**个盈利性质的浏览器从此诞生。1996年夏天,微软公司发布了IE 3.0版,几乎一夜之间人们纷纷拥向IE。当时,因为Netscape的浏览器是要收费的,而微软公司
则免费提供IE。关于浏览器领域谁主沉浮,很多人担心Microsoft会像在桌面领域一样,在Web领域也一统天下。到1999年发布IE 5.0时,它已经成为使用*广泛的浏览器。2002年,继承了Netscape的开源版本的Firefox浏览器异军突起,夺回了大量的市场份额。
Internet提供了网络连接的基础架构,而浏览器则带给了Internet更为广泛的实际应用。下面让我们来深入了解一下影响浏览器发展的一个重要因素——web应用需求都经历了怎样的变化。回顾Web应用的发展历程及展望其光明前景,我们可以将其大致分为3个阶段:已经基本成为历史的1.0时代,正在曰益发展的2.0时代和尚在萌芽中的3.0时代。
Web 1.0时代,在计算机世界大行其道的是*先由Borland公司提出来的C/S(客户机/服务器)结构模式。在这种模式下,服务器被启动,就随时等待响应客户程序发来的数据请求,这些请求通常只是一些数据库操作语句,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向它发出请求,服务器程序根据预定的规则作出应答,返回结果。
C/S模式**将程序和数据彻底分离,数据可以为不同程序所用,性能比文件服务器结构要强,维护起来比文件服务器结构容易,利用网络所带来的数据库的数据查询维护便利。然而,这种胖客户机/瘦服务器的模式使得资源没有合理使用,客户机程序配置复杂,开发难度大,难以使应用系统动态适应企业日益增长的业务需求,开发缺乏标准,系统的可用性和性能受到怀疑,同时也不便于异构系统的互连和扩充,难以保证应用系统的**性。
C/S模式的缺陷和不足很快就被微软公司注意到了,微软公司对Borland公司的C/S模式进行了小幅度的改动,然后提出了自己的B/S模式。这种B/S模式一般采用三层结构。
客户层(browser):用户接口和用户请求的发出地,典型应用是网络浏览器。
服务器层(Web server):典型应用是Web服务器和运行业务代码的应用程序服务器。
数据层(datatier):典型应用是关系型数据库和其他后端数据资源等。
B/S模式极大地统一并简化了客户端,使用户的操作变得异常简单和一致。B/S结构是对C/S结构的一种改进,用户工作界面是通过浏览器来实现的,浏览器根据获得的极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。然而,B/S模式的三层结构只是简单把数据层分开,没有把程序代码按照逻辑分开,代码重用难度大,显示逻辑和业务功能逻辑没有分开,耦合性和移植性都比较差。
无论是C/S还是B/S结构都存在这样一些缺点:数据**性低,对服务器要求过高,数据传输处理速率低等。例如,通过浏览器进行大量的数据输入或进行报表的应答,专用性打印输出都比较困难和不便,由此我们引出了一种分层的Web应用。它的体系结构如图1.1所示。
把显示逻辑从业务逻辑中分离出来,这就意味着业务代码是独立的,可以不关心怎样显示和在哪里显示。
业务逻辑层处于中间层,不需要关心由哪种类型的客户来显示数据,也可以与后端系统保持相对独立性,有利于系统扩展。多层结构具有更好的移植性,可以跨不同类型的平台工作,允许用户请求在多个服务器间进行负载平衡。
分层的Web应用由于以上优势迅速成为Web应用的主体,其间动态网页由于交互性受到了广泛的关注并得到了长足的发展。目前,常用的Web动态网页开发技术有以下几种:CGl、ASP、PHP、JSP。这些动态网页的工作原理大致相同,简单归纳如下。
1.当用户请求一个木.asp(*.jsp、*.php、*.cgi等)页面时,web服务器响应HTTP请求,调用ASP(JSP、PHP、CGl等)引擎,解释(编译)被申请的文件。
2.若脚本中含有访问数据库的请求,就通过ODBC或者(JDBC)与后台数据库相连,由数据库访问组件执行访问操作。
3.ASP脚本在服务器端解释(JSP在服务器端是编译)执行,根据访问数据库的结果集自动生成符合HTML语言的主页,去响应用户的请求。所有相关的发布工作由www服务器负责。
除了这些纷繁的动态页面生成技术,丰富的Web页面表现技术也不断涌现。在过去的几年里经过长足发展的页面技术有Applet、JavaScript和Ajax等,正是这些技术使得Web应用更加动态,更加智能,并且更具表现力。
Web l.0是以信息的增值服务,围绕信息的搜集、获取、整理和发布而展开的。它的发
展忽视了用户的能动性,用户只能浏览由网页编辑搜集整理的信息,而不能参与其中并加入讨论。网站对于用户来说形同生人。这样的一种模式不仅无法长时间地吸引用户,并且网站形式及网站内容极易被其他网站和个人所复制,发展也受到人员和资金的限制。用户需要一种主观的投入,能够与网站展开互动,网站所需要做的事情就是发掘用户的需求并满足用户的需求,把复杂的技术开发留给自己,而把简单的使用体验交给用户,伴随着用户需求的改变,Web 2.0就应运而生了。
一般来说,Web 2.0(也有人称之为互联网2.0)是相对web1.0新的一类互联网应用的统称。Web 2.0跟Web 1.0的*大区别在于没有了编辑,也就没有了信息控制,体现了一种“去**化”的趋势。更注重用户的交互作用,用户既是网站内容的消费者,也是网站内容的制造者。Blogger Don在他的“Web2.0概念诠释”一文中提到:Web 2.0是以Flickr、.Craigslist、Linkedin、Tribes、gyze、Friendster、43Things.tom等网站为代表,以Bl09、TAG、SNS、RSS、wiki等社会软件的应用为核心,依据六度分隔、XML、Ajax等新理论和技术实现的互联网新一代模式。
如果说Web l.0时代的标准语言是HTML,那么Web 2.0时代的标准语言就是XML(eXtensible Markup Language,可扩展标记语言)。这个“下一代网络应用的基石”自从它被提出来时就几乎得到了业界所有大公司的支持,丝毫不逊于当年HTML被提出来的热度。
1998年2月,W3C(World Wide Web Consoutium)正式公布了XML的1.0版语法标准。XML功能强大的主要原因在于XML是一种“元语言”(meta.1anguage)。换言之,XML是一种用来定义其他语言的语法系统。随着XML的发展,W3C开发了一系列技术来规范和促进XML的发展。这一系列技术包括DTD、XML Schema(XMLS)、RELAX NG DOM、SAX、Xpath XSL、XSLT、XSL-Fo、CSS XLink、XPointer、Xquery等。
如果说Web1.0体现的网站和用户之间是一种陌生人的关系,Web 2.0体现的网站和用户之间是主人和客人的关系的话,那么,到了Web3.0时代,每一个用户都是Web的主人。
2005年圣诞节,Bill.Gates讲述了公司的互联网战略,主要围绕一个互联网新的概念模式展开,并给这种互联网模式一个新的名词Web 3.0。从目前看来,未来的Web 3.0主要包含以下3个基本特征。
1.网站内的信息可以直接和其他网站相关信息进行交互和转换,能通过第三方信息平台同时对多家网站的信息进行整合使用。
2.用户在互联网上拥有自己的数据,并能在不同网站上使用。
3.完全基于Web,用浏览器即可以实现复杂的系统程序才具有的功能。
1.1.2 为什么需要Web框架
Web应用开发从lntemet诞生以来就一直在发展着,从传统的CGl到更加**的Servlet,其间经历了无数技术上的变革。回顾Web的发展历史不难发现,实现**的用户与服务器之问或者用户与用户之间的交互可以说就是Web应用的本质,这种交互需要技术上的不断进步来支持。
Web层作为三层架构中的核心层,承担着Web应用的核心功能,在具备较大灵活性的同时,也不可避免地带来一些开发上的制约。由于技术发展的历史原因,虽然目前主流的Web应用开发工具(PHP、JSP、ASP)都提供了服务器端的页面展示、业务逻辑处理和数据访问等功能,但是这些功能并没有形成一个完整的整体,三层架构中Web层的混乱程度几乎到了难以忍受的地步,代码编写困难,调试更加困难。
……