《web应用的发展》由会员分享,可在线阅读,更多相关《web应用的发展(18页珍藏版)》请在金锄头文库上搜索。
1、第1章 Web应用的发展,Web应用程序也就是基于网页的应用程序,用户无需安装任何专用程序,只用浏览器来访问服务器,通过浏览网页就可以实现业务流程。相对于原来的客户端/服务器(C/S)模式,这种新的程序开发模式称为浏览器/服务器(B/S)模式。它是随着Internet技术的兴起,对传统结构的一种改进。Web应用的业务逻辑完全在应用服务器端实现,客户端只需要浏览器即可进行业务处理,是一种全新的软件系统构造技术。这种结构更成为当今应用软件的首选体系结构。,1.1 从静态网页说起,最开始的Web只是一个一个的站点(website),还不能称作应用程序,它们由很多静态网页堆积而成,内容更新只能通过修改
2、网页本身来实现。 静态网页是指没有后台数据库、不含程序、不可交互和不会有任何改变的网页。静态网页的内容变化只能通过重新编辑网页文件来实现。绝大部分静态网页是以htm或html结尾的html文件编写的。在程序设计中一般又把html网页称为静态网页。 HTML是Hypertext Markup Language的缩写,中文也就是超文本链接标示语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。,1.2 动态网页的鼻祖CGI,随着互联网的发展越来越多的应用程序也希望转移到Web上去,真正的Web应用开始出现,查询数据库、调用程序处理、发送电子
3、邮件等等。必须要有动态网页才能满足用户的需求,最早的动态网页是CGI程序。 CGI(Common gate intergace)通用网关接口的简称。它是一段部署在服务器上的程序供同客户端的页面来调用的接口,通俗的讲CGI就像是一座桥把网页和Web服务器中的执行程序连接起来,当用户在浏览器端填好表单(form)要求输入的资料,提出HTTP请求后,Web服务器端将执行一个表单所设定的可执行的CGI应用程序,CGI程序分析表单(form)中所输入的资料,存取数据库,将查询执行的结果以HTML的格式返回给浏览器。CGI可以实现处理表格,据库查询,送电子邮件等许多操作,CGI使网页变得不是静态的,是交互
4、式的。,1.3 三足鼎立,虽然CGI可以实现动态网页,但它还是基于传统的编程方式,尤其是不适合网页输出。网页的输出需要用大量的print语句来实现,开发者几乎无法从程序中看出最后输出的网页的是什么样,更无法使用网页编辑工具,程序设计人员与网页开发人员无法分工协助。于是替代CGI专为开发动态网页的语言出现了,目前最热门的有3种:ASP、JSP和PHP。它们占据了Web应用的绝大部分市场,而且各有优势成了三足鼎立之势。,1.3.1 系出名门-ASP和ASP.Net,ASP是微软公司开发的代替CGI脚本程序的一种应用。ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP
5、是在服务器端运行的,可以用来创建和运行动态网页或Web应用程序。ASP网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的Web应用程序。 ASP在外表上看起来仍然是一个HTML文件,只是在需要变化的部分加入的了一些ASP特有的脚本,这些脚本又称为ASP Bean。,1.3.2 草根中走出的巨人-PHP,PHP是:Hypertext Preprocessor(超级文本预处理语言)的缩写。PHP是一种开放源代码的脚本编程语言,与ASP和JSP一样都是一种在服务器端执行的嵌入HTML文档的脚本语言
6、,也需要在容器中运行,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。 从一开始PHP就开源项目的面孔出现,PHP成功的两大秘诀,第一条就是简单,为编程者提供最大的便利。第2条就是“Community(强大的社区)”,众多的个人参与者对PHP的发展提供了非常大的帮助,所以PHP被戏称为草根语言。以上特点使PHP也有相当多的支持者,PHP的最新版本PHP5也进入的面向对象语言的特性,在Web
7、应用开发领域是微软ASP、SUN的JSP有一个有利的竞争者。,1.3.3 来自Java阵营-JSP和J2EE,JSP(JavaServer Pages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的HTML文件中插入Java程序段(Scriptlet)和JSP标签(tag),从而形成JSP文件,文件扩展名就是.jsp。 JSP技术使用Java编程语言编写类、标签和Scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重
8、用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。最重要的是因为JSP由Java语言编写,可以说JSP的跨平台能力是与生俱来的。JSP也需要自己的运行环境,称为JSP服务器或者JSP容器,目前流行的JSP服务器有开源项目Apache-Tomcat、JBoss和厂商提供产品的weblogic、webshpere等等,1.3.3 来自Java阵营-JSP和J2EE,J2EE框架:是开放的,是一组技术规范和指南,可以由不同的厂商来实现。包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间存在良好的兼容性。 组件: Servlet:java平台上
9、的CGI,在服务器端运行。 Jsp:普通静态HTML和动态页面输出混合编码技术。 EJB:一组可重用组件,建立分布式应用。 JDBC:标准sql数据库访问接口,用标准Java API来编写数据库应用程序 JNDI:组件客户使用者定位各种对象,以便使用组件和资源。如EJB JTA:处理事务的标准接口,支持事务的开始、回滚、提交。 Jax_RPC:可以将java类或者java应用重新包装,并以web service的形式发布。为用户包装了web服务的部署和实现。,1.4 模型-视图-控制器(MVC),设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。MVC正是这样的一个设
10、计模式,它强制性的使应用程序的输入、处理和输出分开。在Web应用中MVC模式被极广泛才采用,几乎所有的设计人员都或多或少的要遵循或者参考MVC模式。,1.4.1 MVC简介,MVC本来是存在于桌面应用程序中,M(model)是指数据模型,V(View)是指用户界面,C(Control)则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。后来MVC被借用到Web应用开发中去,发现更能发挥它的威力,最后被Sun公司推荐为J2EE平台的一个经典模式。模式并不局限与某种语言,MVC模式在.NET和PHP中同样有其实现方法。 模型、视图与控制器的分离,使得一个模
11、型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器3者之间的关系和各自的主要功能,,1.4.2 MVC的组成部分,视图(View)代表用户交互界面,对于Web应用来说就是HTML界面。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模
12、型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 模型(Model):就是业务流程/状态的处理以及业务规则的制定。 控制(Controller)可以理解为一个分发器,他来决定选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求,控制层并不做任何的数据处理。,1.4.3 MVC带来的好处,既然所有的模式是经典代码的总结,是经过反复验证的经验,那么MVC模式也一定有很多优势,下面分析MVC到底带来了哪些好处。 大部分Web应用程序是用ASP,PHP或者JSP开发出来。它们将像数据库查询语句这样的程序代码和像HTML这
13、样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常比较困难,尤其是维护他人编写的已有代码。MVC从根本上强制性的将它们分开,最大程度上实现了程序代码与网页的分离。 多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是WAP界面,用一个模型就能处理它们。由于数据和业务规则从表示层分开,所以可以最大化的重用代码。,1.5 Ajax的兴起,J2EE和.NET等框架使服务器端的设计和开发有了很大的发展,而用户界面的改善却一直比较滞后,总是一个网页转向另一个网页,强制用户进入提交、等待、重新
14、显示的范例,用户的动作总是与服务器的“思考时间”同步。而Ajax的出现极大的丰富了用户体验,出现时间不长其影响却非常之大。这里不得不提到Google,Google是Ajax的推广者也是实践者,他的产品中大量使用了Ajax,同时也提供了很好的Ajax的开发包。为Ajax的兴起了很大作用。,1.5.1 什么是Ajax,Ajax不是一种新技术,实际上它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含: (1)基于XHTML和CSS标准的表示; (2)使用Document Object Model进行动态显示和交互; (3)使用XML和XSLT进行数据交换与处理; (4)使用XMLHttpRe
15、quest与服务器进行异步通信; (5)使用JavaScript绑定一切; Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML(异步JavaScript和XML)的简写”。,1.5.2 Ajax的工作原理,Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。如图展示了Ajax页面与后台交互的过程与传统页面刷
16、新模式的不同。,1.5.2 Ajax的工作原理,Ajax的实现分为三步(P10): 1):获取XMLHttpRequest对象。 2):向服务器发送请求url。 3):用回调函数处理服务器返回的结果。,1.5.3 Ajax的优势所在,Ajax引擎读取信息,并且互动地重写网页,这使网页能无缝化更新,也就是在页面已经下载完毕后改变页面内容,这不仅仅是网页内部的互动还可以从外部获取数据。在以前只能有用户来输入数据提交并刷新网页,但现在使用XMLHTTPRequest可以不重载页面的情况下读写服务器上的数据,使用户的输入达到最少。 基于XML的网络通讯也并不是新事物,与FLASH和JAVA Applet相比,Ajax并且不需要插件或下载小程序,不打破沙箱原则,对用户更安全。,1.6 小结,本章回顾了Web应用的发展历程,简要介绍了当前主流的几种主流的开发语言,通过比较发现JSP/J2EE与其它几种相比更有优势。而对于庞大数量的Java开发人员来说,学习JSP只需要熟悉简单的JSP特性而不必重新学习一种专门的语言。在下一章中将详细介绍如何使用JSP来开发Web应用。,