880 likes | 1.03k Views
ASP. ASP 技术. 制作人:刘佳 200 5 /7/1. 第一章 ASP 简介. 什么是 ASP ASP 的特征 ASP 的运作原理. 什么是 ASP. ASP —— Active Server Pages 。 WWW 最初创建是为了在世界范围内分享文本文件,这些文本文件作为资料存放于互联网上,用户可以浏览这些文件。而网络服务器不会处理用户信息,用户也无法向服务器提交任何信息。这样的网页即是静态网页。如今静态网页仍然被大量使用,用来存储一些无需经常变动的内容。如经典名著、历史文献等。
E N D
ASP ASP技术 制作人:刘佳 2005 /7/1
第一章 ASP简介 • 什么是ASP • ASP的特征 • ASP的运作原理
什么是ASP ASP——Active Server Pages。 WWW最初创建是为了在世界范围内分享文本文件,这些文本文件作为资料存放于互联网上,用户可以浏览这些文件。而网络服务器不会处理用户信息,用户也无法向服务器提交任何信息。这样的网页即是静态网页。如今静态网页仍然被大量使用,用来存储一些无需经常变动的内容。如经典名著、历史文献等。 而动态网页页正越来越多的为人们所使用。动态网页的产生使得Internet具有了更加强大的功能。所谓“动态”,所指的是网络服务器根据用户提供的信息来创建有针对性的HTML文件的过程,用户得到的是为特定用户设置的页面。比如,xici胡同,根据不同的登录用户,会显示出不同用户名,以及用户的预定版等。 而ASP正是实现动态页面的有力工具之一。
下面让我们来比较一下ASP与其它几种网络编程方式。下面让我们来比较一下ASP与其它几种网络编程方式。 • ASP与CGI编程 早在ASP技术出现之前,就已经有了CGI编程。CGI (Common Gateway Interface)是用来创建动态HTML的方法之一。但是每一个CGI应用都会在服务器上创建一个进程,进程之间不能够动态的分享信息,这样造成系统资源的严重浪费。而ASP可以为每个用户的请求创建一个线程,减少了系统资源浪费。因此CGI一般不用在大型网站上,而ASP却可以胜任。 • ASP与HTML ASP与HTML相互配合构建了动态应用网站。一个动态页面首先需要以静态页面为基础。我们首先构建一个页面的结构,使用HTML插入图片,创建个性化的文字,确定超连接的风格,等等。之后在此基础上添加ASP内容,实现动态显示。ASP代码与HTML代码混合书写,ASP以<%和%>为分界符。
ASP与JSP Java Sever Pages(JSP)和 微软的Active Sever Pages(ASP)在技术方面有许多相似之处。两者都是为基于WEB应用实现动态交互网页制作提供的技术环境支持。同等程度上来讲,两者都能够为程序开发人员提供实现应用程序的编制与自带组件设计网页从逻辑上分离的技术。而且两者都能够替代CGI使网站建设与发展变的较为简单与快捷。不过两者是来源于不同的技术规范组织,其实现的基础:WEB服务器平台要求不相同。 ASP一般只应用于Windows NT/2000平台,而JSP则可以不加修改地在85%以上的Web Server上运行,其中包括了NT的系统,符合“write once,run anywhere”(一次编写,多平台运行)的java标准,实现平台和服务器的独立性,即跨平台性好,这也是JSP比起ASP最大的优势所在。除此之外,基于JSP技术的应用程序比基于ASP的应用程序易于维护和管理。
ASP.NET Asp.net,是微软推出的新一代Active Server Pages,它是微软发展的新的体系结.NET的一部分。ASP.net与ASP兼容。它的代码已在要求下被编译了,所以你可以在任何语言下编制ASP.net。新一代视窗服务系统(NGWS)在注册components时甚至无需重新启动服务器,通过NGWS 框架,所有的METABASE和配置信息都存储在XML文件里。ASP.net 提供了forms 链结到服务器的功能,它能够更简单地处理请求。在ASP.net中植入了一些非常优秀的可升级性特征,包括通过server维持会话状态,以及多处理器平衡。 由于整个.NET体系是构建于NGWS RUNTIME基础上,而NGWS RUNTIME废除了我们习惯使用的COM 体系,取而代之的是更为大众化的runtime,所以从根本上来讲,runtime与Java虚拟机一样。Runtime 的基本运作方式是中途截取代码,并将它转译为普通机器语言,以便系统使用,并负责ASP.net的页面编译。 返回
ASP的特征 • Active Server Pages实际上是将标准的HTML文件拓展了一些附加特征,Active Server Pages象标准的HTML文件一样包含HTML对象并且在一个浏览器上解释并显示。任何你可以放在HTML中的东西--Java applets,闪烁字符串,客户端脚本,客户端ActiveX控件等等你都可以放在Active Server Page中。因此,一个Active Server Page有如下四个重要特征来使之具备很强的通用性。 • 一个Active Server Pages可以包括服务端脚本,您可以利用 VBScript和Jscript来创建Active Server Pages.利用Active Server Page中的服务端脚本,你可以创建动态内容的网页,如 您可以让网页在一天的不同时间显示不同内容。 • 一个Active Server Page提供了一些内置对象。利用这些 Active Server Page中提供的内置对象,你可以使你的脚本更 加强大;这些对象会允许您从浏览器中接受和发送信息。例如 ,利用request对象,你可以接收到用户在HTML form中的信息 并且响应它。
一个Active Server Page 可以用另外的组件来扩展。Active Server Pages本身就是来源于相当数量的标准服务端ActiveX元 素。标准的ActiveX组件非常有用,不过,你并不会被此局限, 你可以轻松创建属于你自己的附加ActiveX组件。这意味着你可 以不加限制的拓展你的ActiveX组件。 • Active Server Page可以和诸如SQL Server这样的数据库进行 挂接,利用一些特别的对象集合,Active Data Object(ADO), 你就可以在你的Active Server Page 中使用SQL语言。而这正 是Active Server Page一个非常强大的功能所在,在线商务以 及在线论坛等高级的,动态更新的站点都需要数据库的支持, 而且需要随数据库内容的更新而自动更新,这样,你就可以利 用Active Server Pages自己建立这样的类似站点。 以上四个特性对Active Server Page进行了限定,Active Server Page就是由Server端脚本、对象以及组件拓展过的标准主页。利用它,你的主页就可以包含动态内容。 返回
ASP的运作原理 • 网络服务器对静态HTML的支持步骤如下: • 用户在地址栏输入要访问的主页地址并回车触发该请求。 • 浏览器将申请发送到诸如IIS的网络服务器上。 • 服务器接受这些请求并根据后缀名判定请求的文件是HTML文件。 • 服务器从当前硬盘或者内存中读取正确的HTML文件,然后将它送给用户浏览器。 • 用户浏览器解释HTML文件并显示结果。 • ASP改变了这个执行过程,在IIS仍然支持静态HTML的前提下 • ,IIS对ASP页面的支持过程如下: • 用户在浏览器地址栏输入中输入要请求的ASP文件名,并回车触发这个请求。 • 浏览器将这个ASP请求发送给IIS。 • 网络服务器接受这个请求,并根据后缀名判定请求得是ASP文件。
(1)向伺服器请求index.asp (4)伺服器返回处理结果 伺服器 浏览器 (2)提交处理 (3)输出结果 Asp.dll 4)网络服务起从硬盘或者内存中读取正确的ASP文件。 5)网络服务其将这个文件发送到叫做asp.dll的特定文件中。 6)ASP文件将从头至尾被解释执行并根据命令要求生成相应的静 态页面,即HTML文件。 7)将HTML文件传回客户端。 8)返回的HTML文件被客户端浏览器解释执行并且显示。
对于网络服务器来说,ASP和HTML有着本质的区别,HTML是不经任何处理回送给浏览器,而ASP的每个命令都是用来生成HTML文件的,生成动态HTML。对于网络服务器来说,ASP和HTML有着本质的区别,HTML是不经任何处理回送给浏览器,而ASP的每个命令都是用来生成HTML文件的,生成动态HTML。 对于客户端浏览器来说,ASP和HTML又几乎是没有任何区别的,仅仅是后缀为.asp和.htm的区别,因为当客户端提出ASP的请求后,浏览器接受的仍然是HTML文件。 下面我们来看一个简单的ASP例子(example1.asp)。
Example1.asp <%@Language=VBScript%> <%stringmsg=“你们好!”%> <html> <head> <title>ASP Script</title> </head> <body> <%=stringmsg%> <%=date( )%> </body> </html> 返回
第二章 安装ASP的准备工作 • 安装和使用IIS • 使用Service Manager • 安装和使用SQL Server
安装和使用IIS Internet Information Server(IIS)是WINDOWS NT 提供的INTERNET服务的核心。微软的操作系统安装光盘上带有IIS. 那么让我们看一下IIS究竟能做些什么呢?微软有大批的产品是为INTERNET连接而设计的。实际上可用的软件很多很多,以至于你很难选择。Internet Information Server 是一个在INTERNET 上提供信息发布功能的软件。微软公司也有为个人发布信息的工具--例如,Personal Web Server ,但是Internet Information Server微软为企业和部门发布信息而设计的。 IIS这个软件是用来运行大型的站点,例如,Microsoft.com, msn.com。
IIS4.0使INTERNET成为了一个正规的应用程序开发环境。许多基于IIS4.0的应用程序,核心由C++编写,然后用VBScipts连接起来。IIS远远超过一般的WEB服务器平台。在它的核心有好几个发布协议,如FTP、WWW、NNTP、SMTP。微软公司还把Microsoft Transaction Server(MTS)加入到IIS中,MTS代表了IIS的最强大的功能。 MTS以一种类似于操作系统中的原子操作的思想,为程序员提供了一种方便容易的编程方法。
FTP ——文件传输协议。以目录的方式发布文件信息。 通常作为一种发布和接收文件的技术。 WWW ——World Wide Web 。这个协议是大部分用户用 来连接INTERNET的协议(虽然他不是唯一的)。 NNTP——通常用作新闻发布。 这是一个发布新闻组的 技术。 注意, 新闻组是邮件的一种派生, 不是任何一个站点所真正拥有的东西。很多 站点都可以有自己的新闻服务器,这些服务 器可以点对点地相互交谈,这样一来,在A 站点发布的一条信息就可以复制到B站点上。 SMTP——简单邮件传输协议,通常被称为“mail”。对 于那些使用mail作为信息传递的方式的站点, 这是一个标准的mail工具。 返回
下面的例子说明为什么MTS是强大的工具。 • 一个电子商用站点对访问者出售礼品。在一次交易完成 • 以前,必须在一个单独的计算机上完成几件不同的事务。以 • 下就是这些事务(按完成的顺序)。 • 在洛杉矶,用运行Oracle 数据库的主界面检查存货清单,看是否有足够的存货。 • 分配存货。 • 在纽约的服务部里,确认信用卡的有效性。 • 向订货流水线系统提交一个完整的订货通知。 • 如果这些步骤中的任何一个步骤发生错误,就要使整个处理过程的结果恢复原状。对程序员来说,MTS不但使恢复原状的操作变得容易,而且它还可以和银行进行远程通讯。
与传统的WEB服务器的比较 传统的WEB服务器使用CGI(Common Gateway Interface)这样的编程语言来提供动态的内容。一个典型的CGI程序接收到一个请求以后,查找数据库中的记录。然后,把记录返回给WEB服务器在网页上发布。这样的一个CGI程序就相当于在WINDOWS NT下打开了一个DOS窗口, 先打开运行一个脚本,然后接收结果,再关闭窗口。这种方式被称为一种非进程内的方式,这样对每一个请求就必须生成一个独立的进程。 IIS组件所创建的组件对象是在进程内操作的。也就是说,他们只是建立一个DLL文件,并安装好,等待下一个请求的到来。当接收到一个请求时,系统会启动一个新的线程来处理这个请求,并返回结果。 由于这些原因,CGI应用程序不使用于大型的站点,但是IIS应用程序在站点扩大时通常不会造成问题。 返回
使用Service Manager 微软介绍了一个用于IIS4.0的新的管理工具,被称为Microsoft Management Console(MMC)。MMC是用来管理IIS的。如下图所示,MMC使用一个和与Explorer相似的界面,他是用树状控制结构来完成操作。您可以在控制面板-〉管理工具-〉Internet服务管理器找到它。
在安装IIS时,会缺省地安装一个或两个站点――一个缺省的站点和一个HTML的管理站点。要建立一个新站点,运行MMC,然后右键点击你的机器名。如下图,这就会开始一个新建WEB站点的向导,然后你就可以按照这个步骤来建立一个正常的站点。(演示)在安装IIS时,会缺省地安装一个或两个站点――一个缺省的站点和一个HTML的管理站点。要建立一个新站点,运行MMC,然后右键点击你的机器名。如下图,这就会开始一个新建WEB站点的向导,然后你就可以按照这个步骤来建立一个正常的站点。(演示)
New Web Site向导使你按照最通常(而且也是最重要)的步骤来建立你的站点。第一个选择就是站点的名字,这个名字不必要和你的URL完全相同,但是他必须有一定的意义。
IIS4.0介绍了一种允许你把物理路径映射成URL的全新的特征。在下面左所示界面中选择Web站点的IP地址以及端口号。端口号默认情况下是80,一般不对此项进行修改。 单击下一步进入右图所时界面,在此选择您的站点所在目录,即可将您站点的物理路径映射过来。
至此IIS的设置基本完成了,下面我们只需设置一下访问权限即可看到如下界面,恭喜您,您已创建了自己的Web站点。至此IIS的设置基本完成了,下面我们只需设置一下访问权限即可看到如下界面,恭喜您,您已创建了自己的Web站点。 返回
安装和使用SQL Server 我们考虑到Microsoft SQL Server的性能代价比和他能很好地和WINDOWS NT集成在一起,我们选择SQL Server数据库作为ASP和IIS例子程序的数据类型。 SQL Server的安装过程在此不作详细介绍。以下我们在假设已经安装了SQL Server的前提下,着重讨论一下SQL Server的安全性问题。 SQL Server有三种安全模式,参考登录模式: 1)标准安全模式 2)WINDOWS NT 集成安全模式 3)混合安全模式 以下就是关于这三种模式的描述。
标准安全模式 标准安全模式是缺省的登录模式。当你使用标准安全模式时,SQL Server自己来决定谁有权限来访问这个服务器。如果你使用了这种配置,你必须为所有的进程建立能访问服务器的登录ID号。 当你在运行Internet Information Server和Active Server Page的系统上使用标准安全模式时,你必须建立一个和sa帐户不同的登录ID号。如果INTERNET用户运行以sa帐户的身份来登录,那么他就有权限来改变你的数据库内的所有的数据。这是及其危险的。为了解决这个问题,你必须建立一个限制了权限的用户。你可以为INTERNET的登录用户取任何的名字。例如,你可以把他命名为WEBUSER。 为了建立这个新的登录ID号,你可以在SQL Enterprise Manager的菜单中选择Manage|Logins。管理登录的对话框就会出现。然后,从Login Name的下拉式框中选择New User。
然后输入你的INTERNET用户所使用的名字。你还需要输入一个密码, 这个密码是INTERNET用户访问你的服务器时认证所使用的。在你说明了这些信息以后,点击Add,一个新的登录ID号就会被加入。 集成安全模式 集成安全模式是SQL Server的另一种可用的安全模式。使用了集成安全模式以后,你的安全认证工作就全部有WINDOWS NT来完成。也就是说,所有的WINDOWS NT帐户都可以访问SQL Server。使用集成安全模式的好处就是你不必要费心去维护两个系统的安全。你只需要在NT的安全框架内建立一个有合适的权限的新用户就可以了。一旦建立了一个WINDOWS NT的用户,这个帐户会自动地映射成为SQL Server在SQL Secure Manager 中的一个登录ID号。 如果你决定使用集成安全模式,一定要非常小心地分配你的用户名。先确定一种命名习惯,然后坚持使用它。有很多的字符(例如:-,#,@, *, /, \)是SQL Server所不支持的字符,但是WINDOWS NT 却支持。所以您最好取一些简单的名字。
混合安全模式 混合安全模式有标准安全模式和集成安全模式两种模式的好处。你可以把WINDOWS NT的帐户和SQL Server的帐户混在一起使用。也可以直接在SQL Server中添加用户,也可以在通过SQL Secure Manager给WINDOWS NT的用户组赋予权限。 混合安全模式和集成安全模式的唯一不同就是在NT用户的帐户上。使用集成安全模式,一个用户必须拥有一个帐户,而且要成为一个有权限访问SQL Server数据库的用户组的成员,才能访问服务器数据库。在这种模式下,你不能直接为SQL Server添加登录ID号。但是,在混合模式下,你可以直接为SQL Server添加登录ID号。NT的帐户和任何在SQL Server中添加的登录ID号一样都有权限访问数据库。因为混合安全模式的在维护NT登录帐户时的灵活性,我们推荐使用它。
用户组,用户,和权限 现在我们已经知道了如何建立登录ID号,登录ID号提供的是一种很低级的安全。他们就象一个进入SQL Server的密码一样。他们只能决定谁能访问SQL Server,然而在他们进入SQL Server以后,却不能确定用户具体能作哪些操作。为了更清楚地说明权限,我们必须为用户组和用户定义权限。 每一个SQL Server数据库,存储过程,和表都和权限有关。只有特定的用户和用户组有权限访问某个对象或对它进行某种特定的操作。当SQL server在WWW上工作时,对每一个对象的权限的合理分配尤其重要。 例如:假如你有一个表名为Credit Cards,它包含了那些从你的站点上购买过商品的人的信用卡。你将不允许一个INTERNET上的陌生人访问这个表。所以,你需要非常仔细地配置这个表的权限,防止这些重要的数据落入坏人之手。在这个例子中信用卡表,你需要这样来配置它的权限,从INTERNET上来的用户只能向表内添加数据,而不能读取表内的数据。你允许用户向表内添加自己的信用卡号码,而不允许用户读取其他人的号码。
第三章 标记及脚本语言 • HTML简介 • VBScript • JScript
HTML简介 什么是HTML? HTML(Heper Text Mask Language)文件是被网络浏览器读取,产生网页的文件。从本质上来说,网络就是一个由HTML文件及一系列传输协议所组成的集合。这些HTML文件存储在分布于世界各地的计算机的硬盘上,而传输协议能把这些文件从一台计算机传输到另一台计算机。 网络浏览器,例如Netscape Navigator或Microsoft Internet explorer,能够解释HTML文件来显示网页,这是网络浏览器的主要作用。当你使用浏览器在网上浏览网页时,浏览器软件就自动完成HTML文件到网页的转换。 HTML表识符 HTML文件与其他文本文件不同,因为HTML文件中包含了一种称为HTML标识符的特殊符号。 比如:<B> This is bold</B>
在上例中,<B>是用来建立粗体文本的标识符。如果你在<B>和</B>标识符中敲入一些文本,这些文本在浏览器上显示出来就是粗体的。这也说明了HTML标识符的另一个基本特征:大部分HTML标识符是成对出现的,并且象一个容器的作用一样。在本例中,标识符<B>告诉浏览器何时用粗体来显示文本,标识符</B>告诉浏览器何时停止用粗体来显示文本。由于它们是这样起作用的,所以<B>被称为容器标识符。在上例中,<B>是用来建立粗体文本的标识符。如果你在<B>和</B>标识符中敲入一些文本,这些文本在浏览器上显示出来就是粗体的。这也说明了HTML标识符的另一个基本特征:大部分HTML标识符是成对出现的,并且象一个容器的作用一样。在本例中,标识符<B>告诉浏览器何时用粗体来显示文本,标识符</B>告诉浏览器何时停止用粗体来显示文本。由于它们是这样起作用的,所以<B>被称为容器标识符。 再请看下面的例子: <FONT COLOR="GREEN" FACE="ARIAL"> My name is Amy.</FONT> 在此例中,这个句子将以Arial字体,用绿色显示出来。COLOR和FACE都是<FONT>标识符的属性,“GREEN”和“ARIAL”是这两个属性的值。COLOR属性决定了文本以何种颜色显示出来,而FACE属性决定了文本显示的字体。
属性在HTML标识符中出现的顺序是不重要的。通常你可以将属性值用引号扩起来也可以不扩起来。因此在网络浏览器上下面的两个句子显示出来的效果是一样:属性在HTML标识符中出现的顺序是不重要的。通常你可以将属性值用引号扩起来也可以不扩起来。因此在网络浏览器上下面的两个句子显示出来的效果是一样: <FONT COLOR="GREEN" FACE="ARIAL"> My name is AMY.</FONT> <FONT COLOR=GREEN FACE=ARIAL> My name is AMY.</FONT> 但是,你最好养成将属性值用引号扩起来的习惯,因为在某些个别情况下,扩与不扩是有区别的。 例如:1)当您想在属性值中包含空格时候,你必须用引号括起来, <INPUT TYPE =SUBMIT VALUE=Submit Me!> 如果你想在这个按钮上显示出Submit Me!的字样而不是 Submit,那么你就需要用引号将此属性值括起来: <INPUT TYPE =SUBMIT VALUE=”Submit Me!”> 2)涉及到ASP脚本标识符可能产生的歧义。 <HR WIDTH=100%> 由于符号%>在ASP中有特殊的含义,所以会引起错误。 只要将100%用“”引用起来,就可解决这种问题。
还应注意以下两个问题: 1)HTML标识符是不区别大小写的。 <FoNt cOLor=”GREeN”> My name is AMY.</fOnT> 与 <font color=“green”> My name is AMY.</font> 显示效果是相同的。 2)在HTML中,一个空格与两个或多个空格的效果是一样的,浏览 器忽略HTML文件中的多余空格,这对HTML初学者来说是一个较 难掌握的规则。请看下面的HTML语句: <B>I am compact </B> <B>I am happy</B> 这两个句子之间包括很多空格,但在浏览器上显示时,两个句 子间多余的空格都会被忽略掉,变为: I am compact I am happy 浏览器也会忽略HTML文件中的回车键,因此你可以在HTML文件 中加入任意多的空行,浏览器将不会显示它们。浏览器忽略多 余的空格键及回车键的特性对于建立可读性强的HTML文件是很 有用的。您可以自由的在你的文件中使用空格和空行来使得你 的文档简明易读。
VBScript 我们简单介绍一下VBScript,VBScript是ASP的缺省脚本语言。VBScript通过变量,操作符,循环,分支,函数和子例程,扩展了HTML。通过在HTML网页中加入VBScript脚本,你可以使静态的HTML网页成为动态网页。 VBScript与Basic语言有密切关系。如果你熟悉BASIC,你将会发现VBScript很容易学习和使用。VBScript是Microsoft Visual Basic的简化版本。 VBScript是一种脚本语言。你可以在HTML文件中直接嵌入VBScript脚本。这使你能够扩展HTML,使它不仅仅是一种页面格式语言。带有VBScript脚本的网页在每次下载到浏览器时都可以是不同的,而且可以对用户的操作作出反应。 VBScript是ASP的缺省语言。你也可以在ASP网页中使用其它脚本语言,如Jscript。
把VBScript的脚本集成到Active Sever Pages中的方法不止一种。最容易的方法是使用两个特殊字符<%和%>。例如,下面的Visual Basic脚本(Example7.asp)在一个ASP网页中自动执行: <HTML> <HEAD> <TITLE> Simple VBScript</TITLE> </HEAD> <BODY> <% FOR myvar=1 TO 20%> <B> Hello Magic!</B> <BR> <% NEXT %> </BODY> </HTML>
JScript 本小节讲述怎样使用ASP中包含的第二种脚本语言JScript,与VBScript一样,JScript可用来扩展HTML,使它不仅仅是网页格式描述语言。使用JScript你可以在HTML文件中包含变量、运算符、循环分支和函数。 JScript是微软的Java Script语言的开发工具,如果你已经掌握了Java Script,你对本章讲述的内容会非常熟悉,除了一些微小的差别,JScript与Java Script几乎完全相同。JScript与Java不是同一种语言,虽然JScript的名字中含有一个J,它会使人们产生一种强烈的感觉,以为这两种语是非常相似的,然而Java是一种真正的编程语言,而JScript只是一种脚本语言。 JScript可以用来完成VBScript所能完成的任何脚本任务,如果你只在Active Server Pages中使用VBScript,你可以略读或干脆跳过Jscript的学习,然而在某些特定情况下,有理由使用JScript 来代替VBScript。
即使几乎所有的Active Server Pages脚本都可用VBScript也可用JScript 来写,但某些脚本用某种语言写会比用另一种来写要简单得多。 更进一步说,可以混合使用两种脚本语言来编写你网点上的Active Server Pages。你可以用JScript来写某些Active Server Pages,而用VBScript来写另一些,这取决于哪种语言更合适。而且,你可以在同一个Active Server Pages中加入分别由两种语言写的脚本。 JScript用作客户端编程语言是非常好的,与VBScript不同,JScript创建的客户端脚本能被现有的大部分浏览器识别。如Netscape Navigator 和 Internet Explorer都可以解释和执行包括JScript 的HTML文件。 因此JScript通常被用来编写客户端脚本,而VBScript用来编写服务器端脚本。
第四章 ASP内置对象 • Application对象 • Session对象 • Server对象 • ObjectContext对象 • Response对象 • Request对象
Application对象 • Application即应用,由ASP或HTML文件按照一定构架组成,用来实现一定的功能。一个ASP加入了一个Application,那么它就拥有了作为单独主页所无法拥有的属性。下面是ASP的Application的一些特性: • 数据可以在Application 内部共享,因此可以覆盖多个用户。 • 一个Application包含事件可以触发某些Application脚本。 • 一个对象的例子可以被整个Application共享。 • 个别的Application可以用Internet Server Manager来设置而 获得不同属性。 • 单独的Application可以隔离出来在它们自己的内存中运行,这 就是说,如果一个人的Application遭到破坏,不会影响其它人 • 您可以停止一个Application(将其所有组件从内存中驱除)而 不影响器它应用。 一个网站可以有不止一个Application, Application对象拥有的所有集合、方法以及事件,详细内容建下表。
Application事件 Application有两个事件: Application_OnStart和 Application_OnEnd,第一个事件是在Application开始时触发,而后者是在结束时触发。 Application_OnStart事件只触发一次,代表着ASP应用的物理启动,也就是第一个用户的第一个请求。同样的, Application_OnEnd事件也只有在服务终止或者该Application卸载是才会触发。也就是说,再一次应用中, Application_OnStart 和Application_OnEnd事件都是触发一次而且仅仅触发一次得事件。 根据这个特性,我们可以想象得到,我们可以利用Application_OnStart事件来初始化系统变量。比如,我们可以利用它来进行网站访问流量的计数。只要网站服务器不停止,那么Application事件就会一直累计计数,不会停止。
使用Application事件和Session事件统计访问人数: <Script language=VBScript RUNAT=Server> SUB Application_OnStart Application(“TotalUser”)=0 //初始化 End SUB SUB Session_OnStart Application.Lock //锁定,防止多个对象同时修改 Application(“TotalUser”)=Application(“TotalUser”)+1 Application.Unlock //解锁 End SUB </Script> 我们在Application_OnStart事件中只做一个操作,就是初始化变量TotalUser,在有用户访问站点的时候,Session_OnStart事件被启用,在这个事件中,我们给TotalUser进行加1操作。 这样在页面中加入脚本<%=Application(“TotalUser”)%>,就可显示访问人数。
Application方法 由于Application变量可以被众多用户共享,这样就产生了一个问题:若几个用户同时对Application变量进行修改就产生了冲突。因此, Application提供了两个方法:Lock和Unclock。在上一个例子中我们已经使用了Application的这两个方法。他们的是用规则是: Application.Method。 Lock方法并不是永远不让其它用户进行Application变量的修改,而是让修改过程连续而有序,为了防止冲突,它把用户对Application的请求修改成请求队列,一个一个得进行操作。这种思想类似于操作系统中的互斥访问。
Application变量 Application变量包括任何类型。一个Application对象有以下两个特征: • Application变量不需要Cookies.网站不需要利用Application 变量来跟踪用户进程,这就意味着您使用起来可以很放心,也 可以适用于各种浏览器。 • Application变量可以被多个用户共享。从一个用户接受到的 Application变量可以传递给另外的用户。 Application变量的赋值和使用 赋值:Application(“变量名”)=“值” 使用:<%= Application(“变量名”)%> 举例:Example2.asp
Example2.asp <html> <head> <title>Application示例</title> </head> <body> <%Application("Greeting")="Welcome User!"%> <%=Application("Greeting")%> <p><a href="example2-2.asp">下一页</a> </p> </body> </html> 返回
Session对象 现在我们来讨论一下在ASP代码中经常会用到的Session对象。 Session对象的产生是为了填补HTTP协议的局限,我们首先来看一下HTTP是怎样工作的。 首先,用户发出请求,然后服务器端做出响应,这种客户端和服务器端之间的联系就是离散的、非连续的。HTTP协议不能提供允许服务端来跟踪用户请求的功能。在服务器端完成响应用户请求后,服务器端不能持续与该浏览器进行连接。从网站的观点来看,每一个请求都是单独存在的,因此,HTTP协议被认为是stateless协议,当用户在多个主页之间转换时,服务器无法知道它的身份。Session的引用就是为了弥补这个缺陷。利用Session就可以使用户在多个页面切换的时候也能保存用户信息,这样很多从前无法做到的事情都变得简单多了。 访问者从到达某个特定的页面到离开的这段时间,每个访问者都会单独获得一个Session,Session可以用来存储访问者的姓名,IP等,可以跟踪用户从一个页面到另一个页面,者对网站开发非常有好处。
Session对象的事件 Session对象共有两个事件OnStart和OnEnd。同Application对象的OnStar和OnEnd一样,唯一不同的是Session是为每个用户分别创建的。 Session对象的方法 Session只有一个方法:Abandon,用于释放会话占用的资源。其实Abandon不一定需要调用,在TimeOut时,系统就隐式执行了Abandon方法。值得注意的是,如果我们在一个ASP页面中调用了Abandon方法,Session却不会立刻被破坏,而是等到整个页面执行完毕,才破坏释放Session的占用资源。 返回