【asp源码栏目提醒】:以下是网学会员为您推荐的asp源码-使用Js写asp服务器端程序教程 - 其它资料,希望本篇文章对您学习有所帮助。
使用 Js 写
asp 服务器端程序教程本章讲述怎样使用 Active Server Pages 中包含的第二种脚本语言 JScript,与VBScript 一样,JScript 可用来扩展 HTML使它不仅仅是网页格式描述语言。
使用 JScript 你可以在 HTML 文件中包含变量、运算符、循环分支和函数,在读完本章之后,你将会了解到怎样使用 JScript 来建立 Active Server Pages。
介绍 JScript JScript 是微软的 Java Script 语言的开发工具,如果你已经掌握了 JavaScript,你对本章讲述的内容会非常熟悉,除了一些微小的差别,JScript 与 JavaScript 几乎完全相同。
JScript 与 Java 不是同一种语言,虽然 JScript 的名字中含有一个J,它会使人们产生一种强烈的感觉,以为这两种语是非常相似的,然而 Java 是一种真正的编程语言,而 JScript 只是一种脚本语言。
JScript 可以用来完成 VBScript 所能完成的任何脚本任务,如果你只在 ActiveServer Pages 中使用 VBScript你可以略读或干脆跳过这一章。
本书剩下部分中的例子程序都使用 VBScript而不用 JScript。
然而在某些特定情况下,有理由使用 JScript 来代替 VBScript。
即使几乎所有的 Active Server Pages 脚本都可用 VBScript 也可用 JScript 来写,但某些脚本用某种语言写会比用另一种来写要简单得多。
这两种语言之间还存在一些重大的差别,当你阅读完本章将会了解到这些。
更进一步说,可以混合使用两种脚本语言来编写你网点上的 Active ServerPages。
你可以用 JScript 来写某些 Active Server Pages,而用 VBScript 来写另一些,这取决于哪种语言更合适。
而且,你可以在同一个 Active Server Pages中加入分别由两种语言写的脚本(详细信息可阅第 13 章“创建 Active ServerPages”)。
简而言之,创建 Active Server Pages 时了解一些 JScript 不会让你吃亏,由于你的脚本变得越来越复杂和专业化,你可能会庆幸 Microsoft 为你提供了又一个对脚本语言的选择机会。
客户端和服务器端编程语言JScript 可用作客户端或服务器端的编程语言。
客户端编程语言可以在诸如Netscape Navigator 或 Microsoft Internet Explorer 的浏览器上得到解释和执行。
另一个客户端编程语言的例子是 Java,当用这些语言写的程序被兼容的浏览器读入时,浏览器自动执行这个程序。
客户端编程语言的有利之处在于浏览器处理了全部工作,这就减轻了服务器的负担。
客户端程序运行起来也比服务器端程序快得多。
当浏览器的用户做出某种行为时,对此的反应不需通过网络进行传输,客户端程序可对它作出反应。
JScript 用作客户端编程语言是非常好的,与 VBScript 不同,JScript 创建的客户端脚本能被现有的大部分浏览器识别。
Netscape Navigator 和 InternetExplorer 都可以解释和执行包括 JScript 的 HTML 文件。
然而,与 VBScript 相同,JScript 也是服务器端编程语言。
服务器端编程语言在提供网点服务的服务器上执行,而不是在接收网页的浏览器上执行。
服务器端编程语言在你的网点计算机上完成所有这些工作,承受所有的负担。
使用 JScript 作为服务器端语言的好处是脚本与使用的浏览器无关。
你的网页甚至能与不把 JScript 作为各户端语言的旧版的网络浏览器兼容,这是因为在网页通过 Internet 传送到浏览器之前脚本就已经被处理了,网络浏览器接收到的只是普通的 HTML 文件。
当你建立 Active Server Pages 时,你将把 JScript 作为服务器端编程语言,因此本书将重点介绍此语言的这个用途, 然而你应当认识到从本章中学到的编程技巧对于建立客户端程序也是有用的。
在 Active Server Pages 中使用 JScript在本节中,你将学习怎样建立可执行用 JScript 建立的脚本的 Active ServerPages,你将在本书的第四部分“用对象和组件建立 Active Server Pages”中学习更多关于 Active Server Pages 的知识。
但是现在你只需将 Active ServerPages 看作一个具有扩展名为 .
asp 而不是 .cfm 的 HTML 文件。
要使用本章中的例子,你需要用扩展名 .
asp 而不是 .cfm 来存贮你的所有文件,如果你不这样做,脚本就不能被解释。
当 Active Server Pages 被浏览器读入时,脚本中的文本就会显示出来,这可能就不是你所期望的了。
要使用本章中的例子,你还必须将文件存贮在你的网络服务器的目录下,例如,你可将文件存贮在 wwwroot 目录下。
要执行脚本,网页必须位于能被你的网络服务器进入的目录下。
当你读入一个 Active Server Pages 时,你不能直接从硬盘上读入这个文件,例如,如果你将一个 Active Server Pages 存为C:InetPubwwwrootmypage.
asp你不能通过在地址框中输入文件路径来将这个文件读入浏览器。
你应当使用网络服务器名来获得这个文件。
例如,如果你的服务器名为 MyServer 而文件被存贮在服务器的根目录下,就可以在浏览器的地址柜中输入 http://MyServer/mypage.
asp。
再一次说明,如果你不这样做,Active Server Pages 中的脚本就不会被解释。
你必须设置你的 Active Server Pages 所在的目录允许脚本的执行,只须当你进行这样的设置后,网络服务器才会执行一个脚本。
详细信息可见第二章“安装及使用 Internet Information Server”。
注意当你改变了 Active Server Pages 后你可能会发现变化没有立即在读入浏览器的网页上反映出来,这可能是由于网络服务器使用内存缓冲来提高性能而引起的。
当建立一个网点时,你可以取消这个特性,详细信息可见第二章。
在 Active Server Pages 中集成 JScriptJScript 不是
ASP 的缺省脚本语言,缺省情况下,当
ASP 中包含一个脚本时,服务器会将它解释为 VBScript 编写的脚本,当你在
ASP 中使用 JScript 编写的脚本前,你应该通知服务器你用的语言种类。
如果你计划将 JScript 作为你主选的脚本语言,你可以用 Internet ServiceManager(见第 13 章)来设置 JScript 为你网络上所有
ASP 的缺省语言。
除此之外,你也可以为某一特定的页指定 JScript 为缺省的脚本语言,要实现这一目的,你可将下述语句放置于一个
ASP 文件的第一行:lt% LANGUAGEJScript gt这一语句表明了本文件中所有的脚本都应当以 JScript 来执行而不是VBScript。
当使用这个语句时,要注意在符号和关健字 LANGUAGE 之间要有一个空格。
在一次申明,一定要将这个语句放置于你的
ASP 文件的首行。
注意你可以在同一个 A.S.P 中混合使用 JScript 和 VBScript,详细信息可见第 13章。
在
ASP 中包括了 LANGUAGE 语句后,你就可以使用两个特殊符号<%和%>来用JScript 创建脚本,例如,下面用 JScript 创建的脚本会在一个
ASP 中自动执行.lt% LANGUAGEJScript gtltHTMLgtltHEADgtltTITLEgt Simple JScript lt/TITLEgtlt/HEADgtltBODYgtlt for myvar0 myvarlt500 myvar gtltBgt Hello World lt/Bgtlt/BODYgtlt/HTMLgt这个脚本在一行上显示 500 个 Hello World!(见图 9.1),注意此例中符号<%和%>是如何使用的,它们标明了 JScript 脚本的开始和结束。
图 9.1 使用 JScript 建立的 Active Server Pages注意与本书中描述的其他语言不同,JScript 是区分大小写的,例如,使用下面的语句将会导致错误。
lt For myvar0 myvarlt500 myvar gt这个语句的错误就在于关键字(for)需要小写,这样 JScript 才能识别它。
<%和%>这两个字符的功能很象 HTML 中的<和>字符,<和>字符是用来指定 HTML 标识符的,而<%和%>是用来指明脚本的。
网络服务器一旦搜索到这两个字符,就将它们之间的文本解释为脚本。
例如,文本< for(myvar0 myvarlt500 myvar)gt是一个 JScript 脚本,它建立了一个运行 500 次的循环。
紧接着这个语句的 Hello World!文本就显示了 500 次。
还要注意在此例中 JScript 脚本是如何与 HTML 识别符结合的。
你可以在一个
ASP中自由地混用脚本和 HTML。
文本ltBgtHello World!lt/Bgt并不是 JScript 脚本的一部分。
ltBgt标识符是 HTML 的一部分,而不是 JScript,但是文本ltBgtHelloWorld lt/Bgt被解释和显示了 500 次。
因为它紧跟在一个 JScript 脚本的后面。
当在
ASP 中使用 JScript 脚本时,你应当注意一个附加的表达式,你可以使用<%=和%>来打印一个变量、方法或是函数的值,来看下面这个简单的
ASP:lt% LANGUAGEJScript gtltHTMLgtltHEADgtltTITLEgt Simple JScript lt/TITLEgtlt/HEADgtltBODYgtlt myvar“Hello World”gtltmyvargtlt/BODYgtlt/HTMLgt这个例子只打印一次 Hello World!第一个脚本设置名为 myvar 的变量的值为“Hello World!”表达式<%=myvar%>打印这个变量的值。
符号对<%和%>用来指定一个脚本,而<%=和%>用来指明一个变量、方法或函数的值。
任何出现在<%=之后的表达式都在浏览器窗口中显示出来。
下面是一个如何使用符号对<%=和%>来打印一个方法返回值的例子,这个
ASP 用黑体来打印文本 Hello World!lt% LANGUAGEJScript gtltHTMLgtltHEADgtltTITLEgt Simple JScript lt/TITLEgtlt/HEADgtltBODYgtlt myvar“Hello World”gtltmyvar.boldgtlt/BODYgtlt/HTMLgt方法 bold 以黑体返回变量 myvar 的值,此方法通过在文本周围加上 HTML 标识符ltBgt和lt/Bgt来实现这一点。
文本ltBgtHello World!lt/Bgt被输往浏览器。
你不能在<%=和%>符号对中放置一个不返回值的 JScript 命令,这会产生一个错误。
例如下面所示:lt for myvar0 myvarlt500 myvar gt不要将<%和%>符号对的功能与<%=和%>搞混。
前者是用来指定脚本的,而后者是用来显示一个变量、方法或函数的值的。
建立 JScript 脚本当建立多行的脚本时,你必须在每一句的末尾用分号结束,它表明了一句的结束及另一句的开始。
下面是个例子:ltmyvar“Hello World”myvar2“How are you”myvar3myvarmyvar2gtltmyvar3gt注意实际上当使用 Microsoft 的 JScript 时,你可以忽略分号。
这样做不会产生错误。
JScript 通过检测一个新的行来判断是否一句结束了。
然而,对 Java Script 来说,不加分号是不允许的。
因此,你应当养成添加分号的习惯。
还应该注意 JScript 是一种区分大小写的语言。
当使用变量、函数、对象及方法时,你必须用正确的大小写字符来识别它们。
例如,下面的脚本将导致一个错误:ltmyvar“Hello World”gtltMyVargt当执行这个脚本时,将会产生“MyVar”未定义的错误。
脚本的这个错误是由于MyVar 与变量 myvar 不是一个变量。
因为 MyVar 没有设定一个值,因此脚本产生了一个错误。
为 JScript 脚本添加注释为你的代码添加注释是明智的。
随着时间的推移,代码会变得越来越难懂。
当你回过头来重写或修改几个月前编写的脚本时,你将会庆幸你的先见之明。
有两种方法为你的脚本添加注释,你可以用专用符号//来添加一行注释,任何跟在这个字符之后的一行文本都将被忽略。
这种类型的注释对于解释代码中某一特定行的功能是非常有用的。
ltmyvar“Hello World” //This is an assignment to a variablegt当你需要加入多行注释时,你可以将你的注释放在符号对/ 和 /之中。
这种类型的注释对于解释一段代码甚至整个脚本的功能是非常有用的。
如下面的例子:lt/ This script prints Hello World 500 times.It was initially created on July 5 1997.It was last revised on August 28 1997./for myvar0 myvarlt500 myvar gtltBgt Hello World lt/Bgt注释的另一个用处是临时取消某一段脚本的作用。
要取消一句或更多 JScript,只需将它们当作注释对待。
当你在调试错误时这个方法是非常有用的。
对象、方法和属性与 VBScript 相比,JScript 是非常面向对象的。
用 VBScript 编写的脚本大部分是用函数来完成任务的,而用 JScript 编写的脚本大部分是用对象及它们的方法和属性来工作的。
这两种语言的差别可以通过怎样用各自的语言来显示当前日期和时间这一问题来说明。
用 VBScript 来显示当前日期和时间,你可以调用函数 NOW,象下面这样:ltHTMLgtltHEADgtltTITLEgt VBScript Date lt/TITLEgtlt/HEADgtltBODYgtThe date and time is: ltNOWgtlt/BODYgtlt/HTMLgt另一方面,用 JScript 来显示当前日期和时间,你需要首先建立一个日期对象,象下面这样:lt LANGUAGEJScript gtltHTMLgtltHEADgtltTITLEgt VBScript Date lt/TITLEgtlt/HEADgtltBODYgtltmydatenew Date gtThe date and time is: ltmydategtlt/BODYgtlt/HTMLgt在此例中,表达式 mydate new Date创建了一个新的名为 mydate 的日期对象,它含有当前的日期和时间,这个对象必须在显示当前日期前建立。
使用 VBScript 显示日期和时间,你只用简单地调用一个函数,而用 JScript 来显示日期和时间,你必须先建立一个新对象,这就是为什么 JScript 被称为面向对象语言的原因。
对象究竟是什么?对象是包含方法和属性的一种东西,对象的方法是可对对象进行操作的东西,而对象的属性是一些特定的值(或是其它对象)。
举一个日常用的例子,一本书就有它的方法和属性,例如,你可以对一本名为Huckleberry Finn 的书采取行动,你可以读它,给它印上花或者如果你觉得它特别糟糕你也可以烧掉它,这些都是与这本书相关的方法。
一本书也有一些属性,例如,名为 Huckleberry Finn 的书有作者和一定的页数,这本书的这些方法和属性决定了你以何种方法与它交流。
与此相比,一个 JScript 对象有它的方法和属性,你可以对 JScript 对象采取特定的行动,你也可以指定和读出对象的某些属性,一个对象的方法和属性决定了你用何种方式来处理它。
现在假设你想要显示本月当天的星期数而不是显示当前的日期和时间,使用VBScript 你可以调用另一函数 DAY()将 DATE 函数作为一个参数,象下面所示:ltHTMLgtltHEADgtltTITLEgt VBScript Day of Month lt/TITLEgtlt/HEADgtltBODYgtThe date of the month is: ltDAYDATEgtlt/BODYgtlt/HTMLgt另一方面,使用 JScript 必须调用 Date 对象的一个方法,一旦你建立了一个 Date对象,你就可以使用对象的 getDate()方法来获得当天的星期数,下面是个例子:lt LANGUAGEJScript gtltHTMLgtltHEADgtltTITLEgt VBScript Date lt/TITLEgtlt/HEADgtltBODYgtltmydatenew Date gtThe day of the month is: ltmydate.getDategtlt/BODYgtlt/HTMLgt在此例中,Date 对象的 getDate()方法通过在 Date 对象 mydate 后附加方法名(以一个点连接)来调用,正如你所看到的,方法与函数是非常相似的,但是方法是与特定对象相关联的函数。
申明变量当使用 JScript 时,你不需要在赋值前申明一个变量。
例如,下面的脚本是正确的:ltmyvar“Hello World”gtltmyvargt在此例中,变量 myvar 被赋了一个值,并且这个值被显示在浏览器窗口上,文本Hello World!显示出来。
但是下面的脚本是错误的:ltmyvar2“Hello World”myvargtltmyvar2gt这个脚本的问题在于变量 myvar 在赋值之前就被使用了,与 VBScript 不同,JScript 变量必须在任何一个表达式、方法或函数中使用前先赋值。
如果你愿意,你也可以在赋值前先申明一个变量,你可以使用 var 表达式来实现这一目的,象下面所示:ltvar myvarmyvar“Hello World”gtltmyvargt在这个脚本中,变量 myvar 在第一行中被申明,这一步不是必需的。
因为这个变量会在紧接着的下一语句中被申明,但是,你可以通过在脚本的头部申明所有用到的变量来使你的脚本可读性强及更好地跟踪变量。
你可以用 var 语句来同时申明和赋值多个变量,下面语言中申明的所有变量都是有效的。
ltvar myvar1myvar2var myvar3“Hello There”var myvar4“How are you”myvar5myvar6“I am fine”gt注意当申明局部变量时你必须使用 ver 语句,见后面一书“将脚本分为函数(函数对象)”。
使用日期和时间(日期对象)我已经简单向你介绍了日期对象。
日期对象有一些有用的方法来操作和获取日期和时间,下面是一些使用日期对象的方法的例子:ltmydatenew DategtltBRgt The current date and time is:ltmydategtltBRgt The current month is:ltmydate.getMonthgtltBRgt The current day of the month is:ltmydate.getDategtltBRgt The current day of the week is:ltmydate.getDaygtltBRgt The current year is:ltmydate.getYeargtltBRgt The current hour is:ltmydate.getHoursgtltBRgt The current minute is:ltmydate.getMinutesgtltBRgt The current second is:ltmydate.getSecondsgt注意你必须在获取任何日期或时间信息之前先建立一个日期对象,在这个脚本中,日期对象 mydate 在脚本的第一句中创建了。
在创建了日期对象后,上述的每个方法都返回一个整数值。
要注意日期对象的大部分方法返回的值都是从 0 开始的,例如,一年中的第一个月是 0 而不是 1。
这可能会引起混乱,因为从常规来看,月份都比此方法返回的值要大 1(从图 9.2 可见到这些方法返回的值)。
你也可以使用日期对象来操作任意的日期和时间,而不仅仅是当前日期和时间,要指定别的日期, 只需在创建对象时把日期传给它。
例如,要建立一个公元 2000年 7 用 4 日的日期对象,你可以使用下列的脚本。
ltidaynew Date20006432713gtltidaygt传给日期对象的参数包括年、月、日、小时、分钟及秒,在此例中,创建的日期对象表示“2000 年 7 用 4 日,3:27:13”,如果你不给小时、分钟、秒参数,它们就缺省地设为 0,你可以使用用这种方法创建的日期对象中的任何一种先前讨论过的方法。
你也可以用一个表示时间的字符串作为日期对象的参数来创建它。
例如,下面的脚本与上面的脚本的功能是一样的:ltidaynew Date“July 4 2000 3:27:13”gtltidaygt再一次说明,如果你不提供时、分、秒参数,它们就缺省地设为 0,当执行这个脚本时,Tue Jul 04 03:27:13 2000 就会显示在浏览器上。
图 9.2 使用日期的方法返回的值日期对象有很多设置部分日期和时间的方法,使用 SetMonth()、SetDate() ()和 SetYear 方法, 你可以改变一个日期对象表示的月、日和年。
使用 SetHours()、SetMinutes()和 SetSeconds()方法,你可以改变一个日期对象表示的小时、分钟和秒。
例如,假设有人在你的网点上注册,你希望此人的注册信息只在一个月内有效,你可以使用下面的脚本来显示过期日期:ltcurrentdatenew Dateexpiredatenew Dateexpiredate.setMonthcurrentdate.getMonth1gtltexpiredategt在此例中,创建了两个日期对象,每个日期对象初始化都表示当前的日期和时间,接着 SetMonth()方法用来设置距今一个月后的过期日期,最后,过期时间的值被显示在浏览器上。
警告可能与你预计的相反, 使用这个脚本来在一个日期上加一个月并不是加上 30 天,这个脚本只是简装地把月数加 1,这意味着在注册的用户将会比在 2 月注册的用户多 2 至 3 天。
要避免这种问题,你可通过 SetDate()和 getDate()方法来累计天数而不是月数。
日期对象在 1970 年 1 月 1 日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。
这是这个对象的一个奇特而又不方便的限制,有一个方法可以说明日期对象的这种特性,getTime()方法返回从 1970 年 1月 1 日午夜开始到现在已过去的百分之一秒数。
下面的脚本返回从 1970 年 1 月1 日午夜到 2000 年 7 月 4 日午夜这段时间的百分之一秒数:ltidaynew Date“July 4 2000 3:27:14”gtltiday.getTimegt此例中的 getTime()方法返回从 1970 年 1 月 1 日到 2000 年 7 月 4 日之间的百分之一秒数(你对此一定很好奇,答案是 962706434000)。
所有的日期和时间都可以通过这种方法由日期对象来表示。
最后,日期对象还有两个方法对被本国或外国用户浏览的网点非常有用,getTimezoneOffSet()方法返回日期对象表示的时间与格林威治时间相差的分钟数,toGMTString()方法将日期和时间组织成格林威治标准格式,下面的例子说明了怎样使用这两种方法。
ltmytimenew DateHoursFromGMTmytime.getTimezoneOffset/60gtltBRgt The current time is:ltmytimegtltBRgt The current Greenwich Mean Time is:ltmytime.toGMTStringgtltBRgt These times are separated by the following number of hours:ltHoursFromGMTgt使用字符串(字符串对象)JScript 中内建的最有用的对象之一是字符串对象,这个对象的方法可以用来以多种方式安排和处理字符串。
例如,你可以用字符串方法以 HTML 格式提供一个字符串,你可以用方法来完成字符串的比较、查找、选取字符串等操作。
你通过 new 语句来建立一个新的字符串对象,来看下面的例子:ltmystringnew String“I am a string”gtltmystringgt在此例中,建立了一个名为 mystring 的字符串对象,它含有字符串“I am aString”。
当这个对象被输出时,这段文本就会被显示出来。
然而一般情况你不需要明确地.
上一篇:
招聘网站设计项目源代码清单
下一篇:
【管理学博士】高技术企业核心知识员工激励组合研究