ASP和ADO在网上图书管理系统中的应用_第1页
ASP和ADO在网上图书管理系统中的应用_第2页
ASP和ADO在网上图书管理系统中的应用_第3页
ASP和ADO在网上图书管理系统中的应用_第4页
ASP和ADO在网上图书管理系统中的应用_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE PAGE 32 ASP和ADO在网上图书管理系统中的应用摘 要 :本文介绍了网上图书管理系统的构成。重点从实现技术方面探讨了应用于网上图书管理系统中的ASP技术和ADO技术以及二者之间的联系。ASP 内含于 IIS 3.0 和 4.0 之中 , 通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。同时介绍了DREAMWEAVER的用法,以及如何用DREAMWEAVER和ASP结合开发动态商业网站。关键词 数据库; ASP; ADOThe Application of ASP and ADO in the S

2、ystem of Library Management on the InternetAbstract: The essay introduces the composition of the system of library management on the internet supporting the surroundings. The focal point is that it explores ASP technology, ADO technology and their contact which applied the system of library manageme

3、nt on the internet from realizing technologic aspect.ASP is included in IIS3.0 and IIS4.0 .By ASP, we can combine the HTML web, ASP order and ActiveX element to set up WEB server application which is dynamic, alternant and highly efficient.Meanwhile, the essay introduces the usage of DREAMWEAVER and

4、 how to use the combination of DREAMWEAVER and ASP to exploit the dynamic contact points in commercial network.Key word: database; ASP; ADO第一章 问题的提出图书馆图书更换频繁, 这就要求图书馆的管理人员必须能够及时准确的了解图书中所有图书的库存等相关信息,以前这样的信息采集都是依靠人工在下班后根据当天的图书统计而来,这样的信息一般不很准确。“管理出效益”这句话要是用在图书馆的管理方面那是再贴切不过了,由于管理不善出现管理黑洞而造成效益的大量损耗在许多图书馆

5、中出现。随着科学技术的发展,网络技术的成熟,网上图书管理系统成为当今网络的最常见的工具。网上图书管理系统实现了真正意义上的数据实时传输,为管理者及时做出决策提供了依据。第二章 网上图书管理系统的构成传统图书馆最主要的职能是收藏,并在对所收藏的图书资料进行保存和组织的基础上为读者提供各种服务。但是随着网络技术的发展,电子图书馆的建立更大的方便了读者,这里显然不会只有图书,它会集成音频、视频、多媒体等各种其它形式的媒体资源,创造出一个前所未有的阅读新空间。学校图书馆数据库建设主要需要图书馆对各种信息资源进行综合分析处理,提取主要信息要素,按一定的规范格式存贮到计算机中,从而将图书馆馆藏信息转化为计

6、算机可处理的数字信息。图书馆的数据库中最基本又最复杂的数据库是书目数据库,图书馆电子阅览室的编目、流通、阅览、文献检索及二次文献的开发等工作的自动化都是以书目数据库建设为基础。一般认为图书馆后台数据库标准化、规范化建设是实现图书馆自动化的基础和关键。则应在此基础上实现:1:全面完整地反映信息,不仅要揭示文献的基本信息,还要包容具有一定深度和精度的信息。 2:提供多种信息检索手段。选取能反映数据的特征、最有可能被用到的检索途径,提高检索的查全率和查准率。3:可以高速的查询资料,单位时间内为更多的老师、学生、网上学习者提供资料服务,以提高阅览室的使用率、利用率。实现上述功能特征需要图书馆的电子阅览

7、室可以运行和检索本地书目数据库、运行和检索本地大型全文数据库(包括中国学术期刊、超星图书馆等)、实现VOD实时点播视听资料、访问Internet(10M)、检索和共享使用各类光盘资料和数据库(包括人民日报、人大报刊复印资料等)、有多媒体教学功能等。 网上图书管理系统包括图书展示和留言功能子系统。图书展示系统:在这个系统展示了图书馆的图书,同时分类显示了各种图书,并有最新图书提示。集成了增加和删除图书的功能,同时可以上传图片。使用ADO连接图书数据库后,通过服务端的ASP进行各种功能的显示。留言功能子系统:提供了读者与图书之间的交流平台。可以扩大图书的业务范围。则拟建立拓扑图为图一的图书馆管理系

8、统。 图第三章 应用ASP和ADO技术构建网上图书管理系统3.1 ASP技术ASP(Active Server Pages,动态服务器主页),是开发该系统的关键技术。采用Microsoft ASP技术实现WEB接口,连接数据库服务器,处理服务器端的程序,动态生成WEB页面。作为Microsoft公司推出的IIS3.0、IIS4.0服务器的一个组件,它将脚本式编程语言直接嵌入HTML语言中,通过执行脚本语句,实现处理运算,变量输出和子过程调用等功能。ASP提供了一个服务器的Scripting 环境,能够利用它建立和运行动态的、交互的、高效的网络服务器的应用程序。因为ASP是基于DCOM(Dist

9、ributed Component Object Model,分布式组件对象模型)构架,所以程序构架可以在本地或网络上以分布方式执行。由于HTTP浏览器本身具有跨多种软硬件平台的优势,因此是一种极好的客户端操作平台,这就构成了浏览器/服务器的框架模型。有了ASP,程序与外观得到分离,通过使用脚本和组件,ASP允许用户将编程工作与一个网页的设计和其他工作分离出来。在传统情况下,开发WEB应用时,要嵌入一些Script语言如VBScript、JavaScript到HTML中,使这些Script运行于客户端,也就是浏览器,但并不是每个浏览器都支持所有的Script语言,现在只有Netscape 2.

10、0以上,IE3.0以上和Opera3.0以上支持Script语言,这对应用带来很大的不便。使用ASP时,应用程序是在服务器端运行而不是在客户端运行。当用户访问一个ASP页面时,首先WEB服务器调用ASP文件,并读取ASP文件的全部内容后并开始执行所有的Script命令,生成标准的HTML页,再把这些HTML页传送到用户端的浏览器上,并完成操作,如图2所示。这样,只要运行普通的浏览器,而不必担心所用的浏览器的类型,实现了浏览器的无关性以下罗列了 Active Server Pages 所独具的一些特点:. 使用简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。 . 无须 c

11、ompile 编译,容易编写,可在服务器端直接执行。 . 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。 . 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。 . Active Server Pages 的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高

12、了程序的安全性。 图2ASP框架提供的对象(相关的方法,事件和属性)含有WEB服务器和它的环境信息,使得处理简单、易于管理,并提供了一个灵活的数据存储系统。ASP框架的六个内置对象为:1.Request对象 是从客户端取得信息。2.Response对象 将信息送给客户端。3.Session对象 存储在一个Session内的用户信息。4.Application对象 在一个ASP-Application内让不同的客户端共享信息。5.Server对象 提供一些服务端使用的方法。6.Objectcontext对象 可以配合Microsoft Transaction Server进行分布式事务处理。其中

13、,Request对象用来连接客户端的WEB页(.html文件)和服务器端的WEB页(.asp文件),使得它们之间可以交换数据。Request对象允许ASP查询有关于交互的客户程序信息,Request对象代表由客户端发往HTTP的请求报文。Response对象用于向客户端浏览器发送数据。用户可以使用该对象将服务器端的数据用HTML超文本的格式发送到用户端的浏览器。Session指的就是访问者从到达某个特定主页到离开为止的那段时间,每个访问者都会单独获得一个Session。Session可以用来存储访问者的一些信息,可以创建虚拟借书篮,还可以用来跟踪访问者的习惯。同Application对象相比,

14、Session对象更接近于全局变量。Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在WEB应用程序运行期间持久地保持数据。Server对象提供了对服务器的属性和方法的访问。综上所述, ASP在性能方面的优势体现在以下几点: (1)完全与HTML融合在一起; (2)创建简单,不需要编译和链接,脚本可以在ASP环境下直接运行; (3)面向对象,功能可以由ActiveX服务器构件扩展; (4)由于脚本在服务器端执行,因此它几乎可以支持任何一种浏览器。 ASP在性能和效率方面优于CGI、IDC、ISAPI,这主要源于它先进的体系结构,ASP直接建立于WEB服务器中,并

15、且是作为WEB服务器的一个服务运行,支持多用户,多线程。HTTP协议是一个无状态的协议,WEB服务器不能记忆客户浏览器过去曾发送过的请求信息,客户的每次请求都是独立的,彼此之间没有联系,因而服务器的许多时间都花费在处理请求上,服务效率受到了影响。ASP拥有强有力的会话管理机制,它可以实现各请求之间的信息共享,提高了效率。3.2 ADO技术ADO (ActiveX Data Object,ActiveX数据对象)是针对当前Microsoft软件所支持的数据进行操作的最有效、功能最强大的方法。它是一种功能强大的数据访问编程模式,它把大部分数据源可编程的属性直接扩展到Active Server上。(

16、1)ADO与OLE DBADO是统一数据访问(Universal Data Access)的一个基本组件。ADO不是一个具体的数据访问接口,而是一个数据访问编程模型。ADO 是基于一种新的数据库编程技术:OLE DB。OLE DB是微软公司推出的一项数据访问技术。这项技术允许访问所有类型和大小的数据资源,不仅是数据库。例如,可以使用OLE DB访问一个SQL数据库,一个Exchange信箱,一个文档检索系统。这种级别的灵活性与ODBC提供的灵活性是同一类的,只是范围更大。(2)ADO对象ADO即Active数据对象(Data Object),是微软公司推出的以ActiveX技术为基础的数据存取

17、方法。ADO的主要特点是具有较少的类层次结构,使用更加容易、访问速度更快、而对磁盘和存储容量的要求更小,ADO支持各种客户机/服务器模式与基于WEB的应用程序,具有远程数据服务RDS的特性,通过RDS能够在一次往返中将服务器端的数据传送到客户端的应用程序或WEB页面中,并在客户端对数据进行处理后,立即更新服务器端的数据。ADO基于通用对象模型 (COM),它提供编程语言范围内利用的对象,包括Visual C+以及Visual Basic,面向应用的Visual Basic(VBA), Visual J+, VBScript应用和JavaScript应用。ADO在服务器或中级应用方面是非常有用的

18、,特别是用于Microsoft Active的服务器页面(ASP)。ADO接口是基于对象集合,但ADO对象并不依靠对象层次,大多情况下,可简单地创建并使用需要的对象,不必担心创建许多应用中并不需要的对象。下列对象类组成了ADO接口: 1Connection(连接)用于表示与数据源的连接,以及处理一些命令和事务。 2Error(错误集)用于获得可能发生的错误的更详细的信息。 3Command(命令)用于处理传给数据源的命令。 4Parameter(参数)用于对传送给数据源的命令之间来回传送数据。 5Recordset(记录集)用于处理数据的表格集,包括获取和修改数据。 6Field(字段)用于表

19、示记录集中的列信息,包括列值以及其他信息。图ADO各对象之间的联系可用图所示的ADO对象模型来表示。3.3 在ASP中使用ADOADO是复杂的,必须在对象的各层结构中对许多属性进行设置和赋值。为了简化这项工作,在一个ASP文件需要使用ADO常量时,可以使用服务器端包含预处理器命令将Visual InterDev提供的adovbs.inc文件包含在项目中。例如,如果将此文件放在et项目的Includes文件夹中,预处理器代码行为:在ADO中,不需要创建和打开一个Connection对象就可以使用Recordset对象。但是,即使不直接使用Connection对象,它也会被创建。另外,也需要操作C

20、onnection对象来处理事务。如果想在多个Recordset或Command对象间共享单个Connection对象,也需要创建自己的Connection对象。Connection 对象代表与数据源进行的唯一会话。它是ADO和数据资源之间的通讯管道或通讯路线。ADO和数据库之间的相互作用在Connection对象中发生。第四章 网上图书管理系统数据库的建立使用Access2000 实现关系型数据库数据库的概念数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库(flat-file)和关系数据库(r

21、elational)。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,像记录、域等。新建一个数据库 创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。其步骤为:1 标识需要的数据;2 收集被标识的字段到表中;3 标识主关键字字段;4 绘制一个简单的数据图表;5 规范数据;6 标识指定字段的信息;7 创建物理表。修改已建的数据库 数据库的修改分为:添加、编辑和删除记录。这三种操作均可由ASP创建的程序来完成,下面将详细描述实现的具体方法。用DREAMWEAVER编辑超文本文件WWW上的每个网页都对应一个文件。

22、我们浏览一个页面,要先把页面所对应的文件从提供这个文件的计算机里,通过Internet传送到我们自己的计算机中,再由WWW浏览器翻译成为我们见到的有文字、有图形甚至有声音的页面。这些页面对应的文件不再是普通的“文本文件”,文件中除包含文字信息外,还包括了一些具体的链接。这些包含链接的文件被称为超文本文件。 和普通文本相比,超文本文件中多了一些对文件内容的注释,这些注释表明了当前文字显示的位置、颜色等信息,更重要的是,在有些注释中包含了对用户计算机应做出何种反应的说明,这些注释的内容经过浏览器的翻译后就成了不同的操作。为了使各种不同类型的WWW服务器都能正确地认识和执行,超文本文件要遵从一个严格

23、的标准,这个标准就是超文本标识语言(HTML)。我们也可以利用这种语言来编写超文本文件,在Internet上制作自己的WWW的主页。 超文本文件的概念出现在多媒体技术迅速发展之前,现在随着多媒体技术应用的日益广泛,超文本应该改叫“超多媒体”更加合适,链接的内容已经从原来文本中的一个词或词组,发展到现在一幅图象或是图象的一部分,通过链接得到的内容也更加广泛,可以是地球另一端的某台计算机上的图片、声音、音乐或者电影。但不管叫超文本还是叫做超多媒体,WWW上各网页都是通过链接来完成相互间的访问。而要使访问正常进行,必须使这些链接能够正确地指向所要访问的网页。这些工作是通过统一资源定位器(URL)来实

24、现的。用Dreamweaver创建和管理网站第一步:选择SiteOpen Site打开一个站点。然后在Site选项中双击,DW会自动弹出Site Definition for(站点名称)站点定义对话框。选择第二项Remote Info远端信息,在Access数据列表中有个附属选项,选择第二项FTP,打开FTP远程管理设置面板进行设置。看下图及注解:注解:首先来看上半部分。其中FTP Host即FTP登陆地址;Host Directory即远程文件夹。在这里你可以指定一个用来上载文件的目录。如果是直接上传到根目录下,敲入“”即可;Login即用户名;Password即远程登陆密码;Use Pas

25、sive FTP即使用被动的FTP功能;Use Firewall一项为使用防火墙。这一部分都是为远程登陆所做的一些必要设置。现在来看下半部分。本身Check In/Out是一个副选项,因为单人管理站点时是用不到该功能的。首先要勾选它,才可以看到下面的内容。其中Check Out Files when Opening即提示我们“在检查文件时打开”,这里的“打开”的内容就是指下面的Check Out Name(检验者名称)以及Email Address(检查者的邮件地址)。它的作用在于,当多位用户同时登陆远程站点进行管理时用来表明各自的身份。第二步:做完相关设置后,点下OK键返回到站点管理状态,让

26、我们来观察一下,做完设置后站点管理器发生了什么变化。见下图及注解:注解:图展示的是没有做远程管理设置时本地站点管理器的状态。图所展示的是远程管理设置已经完成等待连接远程服务器的状态。同时,我们发现当设置了Check In/Out功能后,状态栏中就多出了两个分别带有“对号”和“锁头”标识的图标。其中,带有“对号”的图标即代表Check Out功能。“锁头”即带表Check In功能。 第三步:说到这里,那么究竟Check In/Out功能在管理站点过程中会产生什么样的效果呢?现在就让我们来看一看在连接了远程服务器后,利用它们进行远程文件管理时的效果和作用。见下图及注解:图1图2图3注解:首先我们

27、要连接到远程站点。连接后,选择一些文件按下验证,这时候远程站点与本地站点中相同的文件将同步的被勾画上“对号”(见图1所示)。它代表着“我正在修改这些文件,你小子别动弹”。“对号”将针对不同管理者显示成不同的颜色。带有绿色对号标记的文件代表着由“我”本人在对其进行修改,它在本地和远程站点显示的颜色相同。当其他的管理者看到这些文件时所显示的对号标记颜色则为红色。也就是在提醒他们这些文件正在被“别人”修改。这时在本地与远程站点窗口中将同时显示出我们刚刚在“Remote InfoCheck In/OutChecked Out Name”中所设置的检验者用户名。同时远程站点会自动建立一些与被登记的文件名

28、相同,但后缀名为“.LCK”格式的文件(见图2所示),它记录着验证者的个人信息,代表着锁定的远程文件,以防止在“我”修改这些文件时其他的管理者也去修改它们。它本身只是起到一个警示的作用,其他的管理者同样可以硬性的修改远程文件,只要删除它们就可以了。当我们将文件修改完成,保存并上传覆盖远程文件后,这些后缀名为“.LCK”的文件就会自动的被删除。同样的,再选择一些文件按下登记,这时本地站点中的文件将被“锁头”锁定(如图3)。而且本地文件的文件属性也随之改变为只读文件,也就是说“我”没有权限改变这些文件。但在远程站点中这些文件是自由的,不发生任何变化。登记的功能主要是用来预防我们在联机的状态下修改一

29、些文件时错误的将不需要修改的文件进行了改动,因为本地和远程的文件是同步更新的,那么只要我们在修改文件时将其他的不需修改的文件登记一下,就可以避免类似的错误产生而使工作变的繁琐。当我们需要解开他们进行修改时只要再次选中这些文件按下“Check In”即可,如果是单纯的解锁,只需在本地站点管理器中右键点选文件,在弹开的菜单列表中选择“Turn Off Read Only(关闭只读属性)”文件便恢复自由了。 通过以上三步分析,相信您以对通过“登记检查”进行多用户管理有了一个较为清晰的了解。现在让我们来总结一下它们的概念:Check In(登记):只针对本地站点文件运做。避免对不需进行修改的文件做任何

30、改动。Check Out(验证):同步运做于本地与远程站点。提示其他网站管理者某些文件正在修改中,请不要再做修改。第六章 用ASP和 DREAMWEAVER结合编写网上图书管理系统1图书展示系统1default.asp页面该页面显示了图书展示的信息,在左上角有用户登陆框,用于管理员的登陆,管理员的职能是可以增加和删除图书详细见附录清单:附录12lorgin.asp该页面用于管理员登陆的身份验证。详细代码见附录清单:附录23exit.asp该页面用于管理员退出登陆,防止有人在管理员不在的时候擅自增删图书。详细代码见附录清单:附录34. admin.asp内部网络管理员登陆后的管理界面详细代码见附

31、录清单:附录45tushu1.asp用于添加图书资料详细代码见附录清单:附录56tushu2.asp用于添加图书的图片资料:附录67tushu3.asp将图书加入数据库:附录78tushu4.asp展示全部图书:附录89. tushu5.asp将图片以二进制的方式读出:见附录910.tushu6.asp显示单独的图书详细信息:见附录1011.tushu7.asp对图书进行修改:见附录1112.tushu8.asp将修改的图书传入数据库:见附录1213.tushu9.asp删除图书2留言系统分为五个页面1default.asp用来显示所有留言,包括一个三列的表格用来显示数据库的记录页面如下 留言

32、者 内容 电子信箱 操作同学甲 请问aaa资料还了吗? jszj HYPERLINK http:/www/liuyan/delet.asp?id=1 删除 HYPERLINK http:/www/liuyan/xiugai.asp?id=1 修改 Luo 谢谢 rwyc HYPERLINK http:/www/liuyan/delet.asp?id=2 删除 HYPERLINK http:/www/liuyan/xiugai.asp?id=2 修改 asp程序用来定义链接。 全代码为:查看留言我要留言 读 者 留 言 系统 留言者 留言内容 电子信箱 操作 a href=delet.asp?i

33、d=删除 a href=xiugai.asp?id=修改 返回图书主页2.xiugai.asp 用INSERT INTO将要发布的留言添加进数据库。留言板 窗体顶部姓 名: e_mail: 内容:窗体底部窗体顶部窗体底部代码如下:留言板留言板 form action=xiugai2.asp?id= method=post name=liuyan 姓 名: input name=nickname value= size=19 e_mail: input name=e_mail type=text value= size=40 内容: 3.liuyanfabu.aspOK!留言已成功上传 HYPE

34、RLINK Default.asp 查看留言 代码如下:留言板发布OK!留言已成功上传 查看留言 4. xiugai2.asp用UPDATE语句将修改的留言加入数据库。 HYPERLINK http:/www/liuyan/Default.asp OK!留言已成功修改 HYPERLINK Default.asp 查看留言 代码为: 留言板发布OK!留言已成功修改 查看留言 5. delete.asp用DELETE语句删除记录。删除成功 HYPERLINK http:/www/liuyan/Default.asp 返回 代码如下:留言板发布删除成功 返回 第七章 IIS服务器的安装和配置Micr

35、osoft从IIS 4.0开始就提供了以下服务:WWW、FTP、MTS、SMTP、NNTP、索引服务和证书服务。其中我们应用最多的是WWW及FTP服务。下面就详细介绍这两种服务。以下以WINDOWS 2000为例。在配置这些服务前,你先要安装IIS。IIS可以运行在Microsoft的任意一种视窗操作系统上,不过要想真正的提供全部服务,必须把IIS安装在服务器的操作系统上(例如NT Server、Win2000 Server)。在Win9x或工作站上,IIS只充当PWS(Peer Web Server),它不提供全部功能。在安装IIS时,注意Windows 2000与NT安装的方式不相同。WW

36、W服务WWW是World Wide Web的简称,它只是Internet的一个组件,它可以在网络上实现图形服务。使用它,可在你的站点上加入HTML文档和超链接内容,供客户机和浏览器查阅。、打开IIS管理器。如下页图大家已经注意到里面已经存在了默认的Web站点了(hunter是计算机名)。你既可以修改默认的Web站点为你的新站点,也可以重新建立一个新的Web站点。2、新建一个Web站点(1)单击“操作”-“新建”-“Web站点”,就会出现“欢迎使用Web站点创建向导”,然后点击“下一步”。(2)提示要输入关于Web站点的说明,我这里用“IT海洋网”描述,除此之外,还要求输入该Web站点的IP地址

37、,我这里设置为9,端口默认为80,你也可以修改。点击“下一步”。(3)要求输入Web站点的主路径,路径一般有三种选择,这里选择本地硬盘g:itocean。点击“下一步”。(4)点击“允许匿名访问此Web站点”,点击“下一步”。这一步非常重要。(5)设置Web站点的访问权限。如果你初次使用IIS,请使用默认设置。到此为止,已经成功地建立了一个新的Web站点。3、建立了一个新Web站点后,你还不能使用IIS,你还要配置它。查看“IT海洋网”属性。修改它的Web页启动时它会启用的默认文档,一般的网页都默认为index.htm或index.html,请根据你自己的情况修改。在“文档”栏目里。此时你就可

38、以在IE浏览器里输入9或计算机名就可以浏览网页了。(2)启动Web站点新建立了Web站点后,你会注意到这个Web站点还没有启动。如图:启动它,然后在IE地址栏里输入9或者hunter就可以浏览IT海洋网内容了。到此一个小型Web服务器就配置完成了。当然这些都是最基本的设置,你还可以配置一些关于性能和安全的设置,例如限制带宽和哪些用户可以访问此Web页等。第八章 结束语这是一个简单的应用ASP和ADO技术所构建的网上图书管理系统。很多功能还很不完善,有待进一步改善。参考文献:1:ASP.NET应用开发百例 俞雷/周松建 著 清华大学出版社2:ASP.NET入门与实作 杨宗志 编著 科学出版社3:

39、ASP编程精选集锦 电脑编程技巧与维护杂志社 科学出版社4:Dreamweaver MX ASP网页编程入门与范例制作 龙马工作室 机械工业出版社 5:ASP3.0网站架设彻底研究与IIS4/5 陈会安 中国青年出版社6:基于Frontpage环境下的ASP应用 机械工业出版社附录资料:从 XML 生成可与 Ajax 共同使用的 JSON时下,非常流行使用 JavaScript 代码为数据驱动的 Web 应用程序添加互动性。若能将数据编码成 JavaScript Object Notation(JSON)的格式,您就可以更轻松地通过 JavaScript 语言使用它。通过本文,发掘使用 XSL

40、T V2 从 XML 数据生成 JSON 的几种不同方法。几年前,许多开发人员很看好 XML、XSLT、Extensible HTML (XHTML)和其他一些基于标记的语言。现在,Asynchronous JavaScript and XML(AJAX)成了新的热点,人们又将目光转向了使用 JavaScript 代码的数据驱动的富 Internet 应用程序。但是开发人员是否已经消除了 XML 和这一新技术之间的鸿沟呢?当然,您可以在 Web 客户机中使用 XML 解析器来读取数据,但这种做法会带来两个问题。第一,出于安全方面的原因,XML 数据只能从与此页面相同的那个域中读取。这虽然不是什

41、么大的限制因素,但它的确会引起部署方面的问题,还会阻碍 DHTML 小部件的创建。第二,读取和解析 XML 会非常慢。另一种做法是让服务器执行 XML 的解析工作,方法是设置服务器,使之向浏览器发送以 JavaScript 代码或时下流行的 JavaScript Object Notation(JSON)编码的数据。本文将展示如下三种使用 XSLT V2 语言和 Saxon XSLT V2 处理器从 XML 数据生成 JSON 的技巧: 简单编码 通过函数调用加载数据 编码对象 JSON 简介要学习如何将数据编码成 JSON(它只是 JavaScript 的一个子集),最好的方法是从数据开始。

42、清单 1 显示了书籍列表的一个示例 XML 数据集。清单 1. 基本的图形化图书馆 Code Generation in Action JackHerrington Manning PHP Hacks JackHerrington OReilly Podcasting Hacks JackHerrington OReilly 这个数据集很简单,只包含三本书,每本书都具有惟一的 ID、书名、作者姓名及出版商的名字。(没错,我只选择了我自己的书作为数据集,但能怨我吗?这些书实在是不可多得的节日和生日礼物。)清单 2 显示了这些数据在 JSON 中的效果。清单 2. JSON 中的示例数据集 id:

43、 1, title: Code Generation in Action, first: Jack, last: Herrington, publisher: Manning , . 方括号 () 表明这是一个数组。大括号 () 则表明这是一个散列表,该散列表由一组名称和值对组成。在本例中,我创建了一个散列表的数组 用来存储这类结构式数据的一种常见方法。另外一点值得注意的是字符串是通过单引号或双引号被编码的。所以,如果我想用单引号编码 OReilly,我就必须使用反斜杠对它进行转义:OReilly。 这让我编写的这个 XSLT 样式表更为有趣了一些。我并未在本例中放上任何日期,但您也可以通过如

44、下两种方法来编码日期。第一种方法是将日期作为字符串,该字符串必须在后面被解析。第二种方法是将日期作为一个对象,比如:publishdate: new Date( 2006, 6, 16, 17, 45, 0 )这段代码将 publishdate 的值设置为6/16/2006 5:45:00 p.m.。简单编码接下来我将陆续介绍 JSON 编码的几种技巧。第一种也是其中最简单的一种,此样式表如 清单 3 所示。清单 3. simple.xsl 样式表 var g_books = 1, id: ,name: ,first: ,last: ,publisher: ;要理解此样式表,不妨先来看一下 清

45、单 4 所示的输出。清单 4. simple.xsl 的输出var g_books = id: 1,name: Code Generation in Action,first: Jack,last: Herrington,publisher: Manning, id: 2,name: PHP Hacks,first: Jack,last: Herrington,publisher: OReilly, id: 3,name: Podcasting Hacks,first: Jack,last: Herrington,publisher: OReilly;这里,我将名为 g_books 的变量设置

46、为一个包含三个散列表的数组,每个散列表包含关于该书的信息。再回过头来看看 清单 3,您会发现第一个模板匹配 / 路径,它也是首先应用到输入数据集的模板,该模板使用 for-each 循环来遍历每本书。之后,它使用 标记来将文本从该数据输出到 JavaScript 输出代码。对于字符串,我使用名为 js:escape() 的定制函数,它在模板之前定义。该函数使用一个正则表达式将一个单引号标记更改为带有反斜杠的单引号标记。最后一个重要的元素是 标记,它告知处理器要输出的是文本而不是 XML。要检验此过程是否可以正常工作,我加入了一个 simple .html 文件,该文件引用我在 simple.j

47、s 保存的 XSL 样式表的输出。这个 HTML 文件如 清单 5 所示。清单 5. simple.html 文件Simple JS loaderdocument.write( Found +g_books.length+ books );.html 文件使用 标记简单地加载已编码了的 JavaScript 代码。之后,第二个 标记将数组的长度写出到浏览器页面,如 图 1 所示。图 1. simple.html 的输出好了!数据文件包含三本书,相应的 JavaScript 文件也包含三本书。它真的可以工作!通过函数加载上述第一个示例很简单,而且在大多数情况下可以发挥其作用,但它存在一些问题。第

48、一个问题是对于数据何时被加载没有任何提示。如果数据是像页面那样被静态加载的,这不成问题。但是如果页面动态创建了一个 标记来按需加载数据,那么就很有必要知道 标记是何时完成的。实现此功能的最好的方法是让编码了的数据调用一个 JavaScript 函数,而不是只设置数据。这个概念很重要,所以我将花一些时间来介绍一下为什么您必须要通过动态生成的 标记来加载数据。页面加载后,从服务器获得数据是 Web 2.0 的核心功能。一种方法是使用 AJAX 机制通过到服务器的调用来加载 XML。然而,出于安全性的原因,AJAX 机制只限于从单一域获取数据。这在大多数情况下都没有问题,但有时,您可能需要 Java

49、Script 代码运行在他人的页面上(例如,Google Maps)。在这种情况下从服务器获得数据的惟一方法是通过动态加载 标记。获悉 标记何时加载的最好的方法是让 标记返回的脚本调用函数而不是简单地加载数据。清单 6 显示了在函数调用中编码的数据。清单 6. Function1.jsAddBooks( id: 1,name: Code Generation in Action,first: Jack,last: Herrington,publisher: Manning, id: 2,name: PHP Hacks,first: Jack,last: Herrington,publisher

50、: OReilly, id: 3,name: Podcasting Hacks,first: Jack,last: Herrington,publisher: OReilly );清单 7 给出了相应的 .html 文件。清单 7. Function1.htmlFunction 1 JS loadervar g_books = ;function AddBooks( books ) g_books = books; drawbooks( g_books );稍后将详细介绍 drawbooks 函数。这里重要的是了解一下页面如何定义 AddBooks 函数,该函数随后会由 function1.j

51、s 文件中的脚本调用。该 AddBooks 函数负责处理数据。而且被调用的 AddBooks 函数会向页面指示 标记被正确加载,并已加载完成。要创建 function1.js 文件,我只对样式表稍微做了一点修改,如 清单 8 所示。清单 8. function1.xsl 样式表AddBooks( 1, id: ,name: ,first: ,last: ,publisher: );这里,我调用了一个函数,而不是简单地设置一个变量。这就是我所做的惟一更改。回到页面,我使用了 drawbooks 函数来构建书的表格,这样我就能够确认数据被正确编码和正确显示。此函数是在 drawbooks.js 内

52、定义的,如 清单 9 所示。清单 9. Drawbooks.jsfunction drawbooks( books ) var elTable = document.createElement( table ); for( var b in books ) var elTR = elTable.insertRow( -1 ); var elTD1 = elTR.insertCell( -1 ); elTD1.appendChild( document.createTextNode( booksb.id ) ); var elTD2 = elTR.insertCell( -1 ); elTD2.

53、appendChild( document.createTextNode( ) ); var elTD3 = elTR.insertCell( -1 ); elTD3.appendChild( document.createTextNode( booksb.first ) ); var elTD4 = elTR.insertCell( -1 ); elTD4.appendChild( document.createTextNode( booksb.last ) ); var elTD5 = elTR.insertCell( -1 ); elTD5.appendChild

54、( document.createTextNode( booksb.publisher ) ); document.body.appendChild( elTable );这个简单函数创建了一个表格节点,然后循环访问书的列表并为每本书创建一行,为每个数据元素分配一个单元格。此页面上的代码的结果如 图 2 所示。图 2. function1.html 的结果现在我就可以查看一下此页面的输出并确认来自原始 .xml 文件的一切均已被正确转换成 JavaScript 代码,且数据被发送到 AddData 函数并被正确添加到页面。细化函数调用技术我很喜欢函数调用这一技术,但我并不赞同将所有图书数据都放

55、入一个块中。另一种方式是为每条记录采用一个调用,如 清单 10 所示。清单 10. Function2.jsAddBook( id: 1,name: Code Generation in Action,first: Jack,last: Herrington,publisher: Manning );AddBook( id: 2,name: PHP Hacks,first: Jack,last: Herrington,publisher: OReilly );.对 .html 页面只需做少许修改,如 清单 11 所示。清单 11. Function2.html.var g_books = ;f

56、unction AddBook( book ) g_books.push( book ); .这里更改了 XSLT,以使函数调用驻留在 for-each 循环体内。清单 12 显示了更新后的样式表。清单 12. function2.xsl.AddBook( id: ,name: ,first: ,last: ,publisher: );.对这个给定示例来说,这种更改看起来有些随意。但如果原始的 XML 数据集有多种数据类型,要为每种类型分配一个单独的函数调用会使 XSL 和页面上的 JavaScript 代码更为简单、更易于维护。编码对象对小的页面来讲,使用 JavaScript 函数没有问题。但对于大型项目,就需要使用 JavaScript 语言的一些面向对象特性。是的,JavaScript 语言可以处理对象而且可以处理得很好。清单 13 显示了如何创建带有数据的对象。清单 13. Object1.jsg_books.push( new Book( id: 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论