1 ASP 语法基本规则

1.1 Response.write命令

response.write 命令用来向浏览器写输出。
改代码用来向浏览器传送一段文本Hello World

<%@ language="javascript"%>
<html>
	<head>
		<meta charset="utf-8">
		<title>asp文件</title>
	</head>
	<body>
		<%
			Response.Write("Hello World!")
		%>
	</body>
</html>

jquery库实现网页动态内容优势 javascript动态网页设计_html

1.2 在ASP中使用JavaScript

需要设置 JavaScript 为某个特定页面的默认脚本语言,您必须在页面的顶部插入一行语言说明:

<%@ language="javascript"%>

注意!:与 VBScript 不同,JavaScript 对大小写敏感!你必须根据 JavaScript 的需要使用不同的大小写字母编写您的 ASP 代码。
将 <%@ language=“language” %> 这一行写在 标签的上面,就可以使用另一种脚本语言来编写子程序或者函数,默认为VBscript

2 ASP变量

参考JavaScript定义变量的方式
案例:使用 JavaScript 制作基于时间的问候语

<%@ language="javascript"%>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<%
			var d = new Date();
			var h = d.getHours();
			
			Response.Write("<p>");
			Response.Write(d);
			Response.Write("</p>");
			
			if(h < 12) {
				Response.Write("Good Morning!");
			} else {
				Response.Write("Good Day!");
			}
			
		%>
	</body>
</html>

jquery库实现网页动态内容优势 javascript动态网页设计_ASP_02

案例:使用 VBScript 制作基于时间的问候语

<%@ language="javascript"%>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<%
			var d = new Date();
			var h = d.getHours();
			
			Response.Write("<p>");
			Response.Write(d);
			Response.Write("</p>");
			
			if(h < 12) {
				Response.Write("Good Morning!");
			} else {
				Response.Write("Good Day!");
			}
			
		%>
	</body>
</html>

jquery库实现网页动态内容优势 javascript动态网页设计_ASP_03

3 子程序

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<%
			sub vbproc(num1,num2)
				Response.wirte(num1*num2)
			end sub
		%>
	</head>
	<body>
		Result:
		<%
			call vbproc(10,12)
		%>
	</body>
</html>
<%@ language="javascript"%>
<html>
	<head>
		<meta charset="utf-8">
		<title>asp文件</title>
		<%
			function jspro(num1,num2) {
				Response.Write(num1 * num2);
			}
		%>
	</head>
	<body>
		Result:
		<%
			jspro(10,12);
		%>
	</body>
</html>

jquery库实现网页动态内容优势 javascript动态网页设计_html_04

VBScript 与 JavaScript 的不同

当从一个用 VBScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,可以使用 “call” 关键词,后面跟着子程序名称。假如子程序需要参数,当使用 “call” 关键词时,参数必须包含在括号内。假如您省略了 “call” 关键词,则参数不必包含在括号内。如果子程序没有参数,那么括号则是可选的。

当从一个用 JavaScript 编写的 ASP 文件中调用 VBScript 或者 JavaScript 子程序时,必须在子程序名后使用括号。

4 表单和用户输入

4.1 表单实例

<form method="get" action="1-5.asp">
			First Name: <input type="text" name="fname"><br>
			Last Name: <input type="text" name="lname"><br><br>
						<input type="submit" value="Submit">
		</form>

jquery库实现网页动态内容优势 javascript动态网页设计_jquery库实现网页动态内容优势_05

4.2 用户输入

Request 对象可用于从表单取回用户信息。

<body>
	First Name:<%=Request.QueryString("fname")%><br>
	Last Name:<%=Request.QueryString("lname")%>
</body>

jquery库实现网页动态内容优势 javascript动态网页设计_html_06

4.3 取回数据

4.3.1 Request.QueryString

Request.QueryString 命令用于收集使用 method=“get” 的表单中的值。

使用 GET 方法从表单传送的信息对所有的用户都是可见的(出现在浏览器的地址栏),并且对所发送信息的量也有限制。

<%
	response.write(request.querystring("fname"))
	response.write(" " & request.querystring("lname"))
%>

4.3.2 Request.Form

Request.Form 命令用于收集使用 method=“post” 的表单中的值。

使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量没有限制。

<%
	response.write(request.form("fname"))
	response.write(" " & request.form("lname"))
%>

5 ASP Cookies

5.1 Cookie 是什么?

cookie 常用用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。

5.2 如何创建 Cookie

“Response.Cookies” 命令用于创建 cookie。

注释:Response.Cookies 命令必须出现在 标签之前。

<%
	Response.Cookies("firstname")="Alex"
%>

向 cookie 分配属性也是可以的,比如设置 cookie 的失效时间:

<%
	Response.Cookies("firstname")="Alex"
	Response.Cookies("firstname").Expires=#May 10,2012#
%>

5.3 如何取回Cookie

“Request.Cookies” 命令用于取回 cookie 的值。

<%
	fname=Request.Cookies("firstname")
	response.write("Firstname=" & fname)
%>

jquery库实现网页动态内容优势 javascript动态网页设计_应用程序_07

5.4 带有键的 Cookie

如果一个 cookie 包含多个值的集合,我们就可以说 cookie 带有键(Keys)
创建一个名为 “user” 的 cookie 集合。“user” cookie 带有包含用户信息的键:

<%
	Response.Cookies("user")("firstname")="John"
	Response.Cookies("user")("lastname")="Smith"
	Response.Cookies("user")("country")="Norway"
	Response.Cookies("user")("age")="25"
%>

5.5 读取所有的 Cookie

假设您的服务器将上面所有的 cookie 传给了某个用户。

现在,我们需要读取这些传给某个用户的所有的 cookie
首先创建Cookies

Response.Cookies("firstname")="Alex"
	Response.Cookies("user")("firstname")="John"
	Response.Cookies("user")("lastname")="Smith"
	Response.Cookies("user")("country")="Norway"
	Response.Cookies("user")("age")="25"

下面的代码通过 HasKeys 属性检查 cookie 是否带有键

<%
			dim x,y
			for each x in Request.Cookies
			if Request.Cookies(x).HasKeys then
				for each y in Request.Cookies(x)
					Response.Write(x & y & Request.Cookies(x)(y))
					Response.Write("<br>")
				next
			else
				Response.Write(Request.Cookies(x))
				Response.Write("<br>")
			end if
			next
		%>

5.6 如果浏览器不支持 Cookie 该怎么办?

5.6.1 向 URL 添加参数

然后通过Request.querystring取值

5.6.2 使用表单

可以使用表单。当用户点击 Submit 按钮时,表单会把用户输入传给下一个文件

6 ASP Session 对象

6.1 Session 对象

当您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

ASP 通过为每个用户创建一个唯一的 cookie 来解决这个问题。cookie 被传送至用户的计算机上,它含有可识别用户的信息。这种接口被称作 Session 对象。

Session 对象用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。

存储于 Session 对象中的变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 变量中的公共信息通常是 name、id 和参数。服务器会为每个新的用户创建一个新的 Session,并在 session 失效时撤销掉这个 Session 对象。

6.2 Session 何时开始

Session 开始于:

某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序
某个值存储在 Session 变量中
某个用户请求了一个 ASP 文件,并且 Global.asa 使用 标签通过 session 的 scope 来实例化某个对象

6.3 Session 何时结束

如果用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。

如果您想要将超时的时间间隔设置为比默认值更短或更长,可以使用 Timeout 属性。

设置了一个 5 分钟的超时时间间隔
<%
	Session.Timeout=5
%>
要立即结束 session,请使用 Abandon 方法
<%
	Session.Abandon
%>

注释:使用 session 时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是最后的请求。因此我们不清楚该让 session "存活"多久。为某个空闲的 session 等待太久会耗尽服务器的资源。然而如果 session 被过早地删除,用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的!

Tip提示:在 session 变量中仅存储少量的数据!

6.4 存储和取回 Session 变量

Session 对象最大的优点是可在其中存储变量,以供后续的网页读取,其应用范围是很广的。

下面的实例把 “Donald Duck” 赋值给名为 username 的 Session 变量,并把 “50” 赋值给名为 age 的 Session 变量

<%
	Session("username")="Donald Duck"
	Session("age")=50
%>

当值被存储在 session 变量中,它就能被 ASP 应用程序中的任何页面使用:

Welcome <%Response.Write(Session("username"))%>

上面这行代码返回的结果是: “Welcome Donald Duck”。
您也可以在 Session 对象中存储用户参数,然后通过访问这些参数来决定向用户返回什么页面。
下面的实例规定,假如用户使用低显示器分辨率,则返回纯文本版本的页面:

<%If Session("screenres")="low" Then%>
		This is the text version of the page
	<%Else%>
		This is the multimedia version of the page
	<%End If%>

6.5 移除 Session 变量

Contents 集合包含所有的 session 变量。

可通过 Remove 方法来移除 session 变量。

<%
If Session.Contents("age")<18 then
	Session.Contents.Remove("sale")
End If
%>

如需移除 session 中的所有变量,请使用 RemoveAll 方法:

<%
	Session.Contents.RemoveAll()
%>

6.6 遍历Contents集合

Contents 集合包含所有的 session 变量。您可以通过遍历 Contents 集合,来查看其中存储的变量:

<%
	Session("username")="Donald Duck"
	Session("age")=50
	
	dim i
	For Each i in Session.Contents
	Response.Write(i & "<br>")
	Next
%>

如果您不知道 Contents 集合中的项目数量,您可以使用 Count 属性:

<%
	dim i
	dim j
	j=Session.Contents.Count
	Response.Write("Session variables: " & j)
	For i=1 to j
		Response.Write(Session.Contents(i) & "<br>")
	Next
%>

6.7 遍历 StaticObjects 集合

您可以通过遍历 StaticObjects 集合,来查看存储在 Session 对象中的所有对象的值:

<%
	dim i
	For Each i in Session.StaticObjects
		Response.Write(i & "<br>")
	Next
%>

7 ASP Application 对象

在一起协同工作以完成某项任务的一组 ASP 文件称为一个应用程序。

7.1 Application 对象

Web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 文件一起协同工作来完成某项任务。ASP 中的 Application 对象用于把这些文件捆绑在一起。

Application 对象用于存储和访问来自任何页面的变量,类似于 Session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 Session 对象和用户的关系是一一对应的

Application 对象存有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。可以从任何的页面访问这些信息。同时您也可以在一个地方改变这些信息,随后这些改变会自动反映在所有的页面上。

7.2 存储和取回 Application 变量

Application 变量可被应用程序中的任何页面访问和改变。

您可以在 “Global.asa” 中创建 Application 变量,如下所示:

<script language="vbscript" runat="server">

	Sub Application_OnStart
		application("vartime")=""
		application("users")=1
	End Sub

</script>

在上面的实例中,我们创建了两个 Application 变量:“vartime” 和 “users”。

您可以访问 Application 变量的值,如下所示:

There are
<%
	Response.Write(Application("users"))
%>
active connections.

7.3 遍历 Contents 集合

Contents 集合包含着所有的 application 变量。您可以通过遍历 Contents 集合,来查看其中存储的变量:

<%
	dim i
	For Each i in Application.Contents
		Response.Write(i & "<br>")
	Next
%>

如果您不知道 Contents 集合中的项目数量,您可以使用 Count 属性:

<%
	dim i
	dim j
	j=Application.Contents.Count
	For i=1 to j
		Response.Write(Application.Contents(i) & "<br>")
	Next
%>

7.4 遍历 StaticObjects 集合

您可以通过遍历 StaticObjects 集合,来查看存储在 Application 对象中的所有对象的值:

<%
dim i
For Each i in Application.StaticObjects
Response.Write(i & “
”)
Next
%>

7.5 锁定和解锁

您可以使用 “Lock” 方法来锁定应用程序。当应用程序锁定后,用户们就无法改变 Application 变量了(除了正在访问 Application 变量的用户)。您还可以使用 “Unlock” 方法来解锁应用程序。这个方法会移除对 Application 变量的锁定。

8 ASP 引用文件

8.1 #include 指令

通过使用 #include 指令,您可以在服务器执行 ASP 文件之前,把另一个 ASP 文件的内容插入到这个 ASP 文件中。

#include 指令用于创建函数、页眉、页脚或者其他多个页面上需要重复使用的元素等。

8.2 引用文件的语法

如需在 ASP 页面中引用文件,请把 #include 指令放在注释标签中:

<!--#include virtual="somefilename"-->

or

<!--#include file ="somefilename"-->

9 ASP Global.asa 文件

9.1 Global.asa 文件

Global.asa 文件是一个可选的文件,它可包含被 ASP 应用程序中每个页面访问的对象、变量和方法的声明。

所有合法的浏览器脚本(JavaScript、VBScript、JScript、PerlScript 等等)都能在 Global.asa 中使用。

Global.asa 文件只能包含下列内容:

Application 事件
Session 事件
声明
TypeLibrary 声明
#include 指令

9.2 Global.asa 中的事件

在 Global.asa 中,您可以告诉 application 和 session 对象当 application/session 开始时做什么,当 application/session 结束时做什么。完成这项任务的代码被放置在事件句柄中。Global.asa 文件能包含四种类型的事件:

Application_OnStart - 此事件会在第一个用户调用 ASP 应用程序的第一个页面时发生。此事件会在 Web 服务器重启或者 Global.asa 文件被编辑之后发生。“Session_OnStart” 事件会在此事件发生之后立即发生。
Session_OnStart - 此事件会在每当新用户请求他(她)在 ASP 应用程序中的第一个页面时发生。

Session_OnEnd - 此事件会在每当用户结束 session 时发生。在规定的时间(默认的时间为 20 分钟)内如果用户没有请求任何页面,用户 session 就会结束。

Application_OnEnd - 此事件会在最后一个用户结束其 session 之后发生。典型的情况是,此事件会在 Web 服务器停止时发生。这个子程序用于在应用程序停止后清除设置,比如删除记录或者向文本文件中写入信息。

一个 Global.asa 文件可能如下所示:

<script language="vbscript" runat="server">

	sub Application_OnStart
		'some code
	end sub
	
	sub Application_OnEnd
		'some code
	end sub
	
	sub Session_OnStart
		'some code
	end sub
	
	sub Session_OnEnd
		'some code
	end sub

</script>

注释:由于我们无法在 Global.asa 文件中使用 ASP 的脚本分隔符 (<% 和 %>) 插入脚本,我们需要把子例程放置在 HTML 的

9.3 声明

可通过使用 标签在 Global.asa 文件中创建带有 session 或者 application 作用域的对象。

注释: 标签应位于

语法

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
	....
</object>