ASP网络程序设计

Download Report

Transcript ASP网络程序设计

ASP网络程序设计
上海大学春季学期
学 习 方 法
Not to study, But to learn.
少做笔记,多听、多动手。
第一章 ASP简介





1. 网络程序设计语言介绍
2 . ASP运行环境
3. ASP语法简介
4. ASP开发工具与调试技巧
重点: (1) ASP、PHP和JSP的各自特点
(2) ASP的环境配置
1. 网络程序设计语言介绍
(A)
产生背景
国际互联网Internet
1969: 美国国防部高级研究计划局 ARPANET
1987: 美国国家自然科学基金会 NSFNET
1989: 欧洲粒子物理研究所 WWW
1994: 中国科学院网络信息中心CNIC 中国接入
(A)产生背景(续1)
WWW:World Wide Web万维网
HTML: HyperText Markup Language
超文本标记语言,实现文本、图
象、超链接、表格等。
静态网页:网页内容在设计时就确定了,
如要修改或维护,必须修改源代码。
动态网页:网页内容可随时更新,具有交互性。
(A)产生背景(续2)
CGI:通用网关接口,实现网上数据库管理。
使用复杂,不便掌握。
ASP、PHP和JSP应运而生
(B)当前主要的网络程序设计语言
ASP、PHP和JSP
共性:将脚本语言嵌入到HTML文档中。
优点: ASP学习简单,使用方便;
PHP软件免费,运行成本低;
JSP多平台支持,移植方便。
ASP概述
ASP:Active Server Pages,动态服务器网
页技术,MicroSoft推出
后台:Windows NT/2000
Windows 98(PWS 4.0,Personal Web
Server)
前台:网页浏览器Browser
ASP概述(续1)
ASP文件:在普通HTML文件中嵌入
VBScript/JavaScript脚本语言。
•在ASP中,脚本在服务器端运行,当客户
请求一个ASP文件时,服务器就把文件解
释成标准的HTML文件发回客户端。
•在服务器端运行的好处:不受客户端浏览
器限制,便于和服务器交换数据,如存
取数据库。
ASP的优点
(1)
(2)
(3)
(4)
(5)
(6)
VBScript源自VB,简单易学;
脚本语言直接嵌入HTML文档,无需编
译、连接就可以解释执行;
利用ADO组件轻松存取数据库;
面向对象编程,可扩展ActiveX Server
组件功能;
不存在浏览器兼容问题;
可隐藏源程序代码。
ASP的缺点
(1)
(2)
运行速度比HTML慢;
ASP一般限于Windows NT/2000平台。
PHP概述
PHP:超文本预处理器(PHP: Personal
Hypertext Preprocessor)。
1994:Rasmus Lerdorf首先提出
1997:Zeev Suraski、Andi Gutamns
加以完善,PHP 3
后台:Unix/Linux/Windows均可;
前台:网页浏览器Browser
PHP概述(续1)
PHP文件:在普通HTML文件中嵌入脚本语
言,类似C/Java/Perl。
•与ASP一样,脚本在服务器端运行,不受
客户端浏览器限制,便于存取数据库。
PHP的优点
(1)
(2)
(3)
(4)
(5)
PHP是完全免费的,可以从PHP官方站
点(http://www.php.net)自由下载。
PHP的源代码开放;
多平台支持;
不受客户端浏览器限制;
与ASP相比,PHP占用系统资源较少,
执行效率较高。
PHP的缺点
(1)
(2)
(3)
运行环境的安装、配置比较复杂;
相对ASP,复杂一些;
没有大型专业公司支持。
JSP概述
JSP:Java Server Pages, Sun公司推出。
后台:Unix/Linux/Windows NT/2000均可;
前台:网页浏览器Browser
JSP概述(续1)
JSP文件:在普通HTML文件中嵌入
Java程序片段(Scriptlet)。
•在JSP中,脚本在服务器端运行,当客户
第一次请求一个JSP文件时,该文件将
被编译成Servlet,并由Java虚拟机执行,
以后的请求就不用再编译了。
•注意:ASP每次请求均需翻译。
JSP的优点
(1)
(2)
(3)
多平台支持;
编译后运行,执行效率高;
JSP采用Java技术,而Java作为一个成
熟的跨平台的程序设计语言,几乎可以
实现任何想要实现的功能。
JSP的缺点
(1)
(2)
开发运行环境比ASP复杂;
相对ASP的VBScript而言,Java稍难。
选择ASP的理由
(1)
(2)
(3)
ASP是微软的产品,与流行的Windows
系统和IE浏览器兼容性好,发展前景好
ASP所用的VBScript简单易学;
ASP的网上资源多,便于初学者。
2. ASP运行环境
• Windows NT 4.0: 在Server上安装IIS4.0
(Internet Information Server 4.0);
• Windows 2000 Server: 本身已经支持;
• Windows 98: 安装个人服务器软件PWS
4.0 (Personal Web Server 4.0)。
• 虚拟目录:缺省C:\intepub\wwwroot ,
用户最好另建自己的虚拟目录
3. ASP语法简介
ASP文件就是在普通HTML文件中嵌入
VBScript /JavaScript脚本语言。
•过去开发网页也用脚本语言,但以前的脚
本语言是在客户端运行,客户端浏览器
必须支持才行。
•在ASP中,脚本在服务器端运行,当客户
请求一个ASP文件时,服务器就把文件
解释成标准的HTML文件发回客户端。
3.1 ASP文件的基本组成和约定
ASP程序包括3个部分:
(1) 普通的HTML文件;
(2) Server端的Script代码,位于<% …
%>之间的程序代码
(3) 客户端的代码,位于<Script> …
</Script>之间的程序代码。
3.1 ASP文件的基本组成和约定
(注意事项)
• 在ASP中,VBScript是默认的脚本语言,
如需改变,可如下进行:
<%@Language=VBScript%>
<%@Language=JavaScript%>
• 由于ASP是在Server端执行,而VBScript
的用户界面方法(如InputBox和MsgBox)
是在Client端执行,故在ASP中就不能
使用了。
3.2 ASP文件举例
<html>
<head>
<title>一个简单的ASP程序</title>
</head>
<body>
<H2 align="center">欢迎您光临我的主页</H2>
<p align="center">
<%
n=Year(date())
y=Month(date())
r=Day(date())
sj="您来访的时间是:" & n & "年" & y & "月" & r & "日"
Response.Write sj
'输出结果
%>
</body>
</html>
3.2 ASP文件举例
3.2 ASP文件举例(续)
<html>
<head>
<title>一个简单的ASP程序</title>
</head>
<body>
<%For I=1 To 6 %>
<font size="<%=I%>">欢迎您来访</font><br>
<%Next%>
</body>
</html>
3.2 ASP文件举例(续)
3.2 ASP文件举例(续)
<html>
<head>
<body>
<title>一个简单的ASP程序</title> </head>
<font size="1">欢迎您来访</font><br>
<font size="2">欢迎您来访</font><br>
<font size="3">欢迎您来访</font><br>
<font size="4">欢迎您来访</font><br>
<font size="5">欢迎您来访</font><br>
<font size="6">欢迎您来访</font><br>
</body>
</html>
3.3 ASP的开发工具
• Microsoft Visual InterDev,可编写、调
试,适合多人合作开发大型程序;
• 记事本或其它文本编辑器,*.asp
• EditPlus、FrontPage
3.4 ASP的调试技巧
• 用编辑器编写,用浏览器调试;
• 阅读出错信息,如错误描述、出错代码
行数等,查出原因;
• 将一些语句注释掉,依次逐段调试;
• 在程序中临时添加输出语句,如
Response.Write,将中间结果输出来查
看,以发现错误。
3.5 ASP程序编写注意事项
(1)
(2)
(3)
在ASP中,字母不区分大小写;
在ASP中,标点符号均为英文状态下输
入的标点符号;但在字符串中无所谓。
普通的HTML元素可以在一行里连续书
写,但在ASP中必须分行书写。一条
ASP语句就是一行,一行也只能写一条
ASP语句。
3.5 ASP程序编写注意事项(续)
(4)
(5)
(6)
如果ASP语句太长,一行写不下,可用
续行符“_”(下划线),也可直接写,让
它自动换行。
普通HTML的注释语句为: <!--…-->。
ASP的注释语句为:
REM 注释内容
‘
注释内容
3.5 ASP程序编写注意事项(续)
(7)
(8)
(9)
在ASP中,<%和%>的位置相对随意,
既可以单独占一行,也可以与ASP语句
和在一起占一行。
书写风格,缩进格式,阶梯式,加注释
在ASP程序中可以包含HTML语句,充分
利用FrontPage等编写HTML语句,特别
是表格等,在将VBScript脚本插入。
第二章 ASP脚本语言VBScript
• 脚本语言介于HTML和VB、Java等高级语言之
间,更接近高级语言,但比普通高级语言简
单易学,功能稍弱。
• ASP本身不是脚本语言,是为嵌入HTML页面
的脚本语言提供运行环境。 VBScript、
JavaScript,默认VBScript
• 脚本语言程序在Server端执行,放在<%和
%>之间;为了某种需要,也可在Cilent端执
行。
2.1 VBScript代码的基本格式
ASP程序通常将VBScript放在Server端执行
标识方法:
• <% VBScript %>
• <Script Language=“VBScript” Runat=“Server”>
VBScript 代码
</Script>
2.1 VBScript代码的基本格式(续)
有时为了某种需要,VBScript也可放在
Client端执行,语法格式如下:
<Script Language=“VBScript” >
VBScript 代码
</Script>
2.2 VBScript数据类型
•
•
•
在VBScript中,只有一种数据类型,称为Variant,也
叫变体类型。它也是VBScript 中所有函数的返回值
的数据类型。
Variant是一种特殊的数据类型,根据不同的使用方
式,可包含不同数据类别。 Variant变量中保存的数
据类型称为数据子类型。如:
Variable=2003
Variable=“2003”
Variable=“上海大学”
Variable=3.1415926
VBScript可根据赋值自动确定变量的数据子类型。
Empty
Null
Boolean
Byte
Integer
Currency
Long
Single
Double
Date (Time)
String
Object
Error
未初始化的 Variant。对于数值变量,值为 0;对于
字符串变量,值为零长度字符串 ("")。
不包含任何有效数据的 Variant。
包含 True 或 False
包含 0 到 255 之间的整数。
包含 -32,768 到 32,767 之间的整数。
-922,337,203,685,477.5808 到
922,337,203,685,477.5807。
包含 -2,147,483,648 到 2,147,483,647 之间的整数。
包含单精度浮点数,负数范围从 -3.402823E38 到 1.401298E-45,正数范围从 1.401298E-45 到
3.402823E38。
包含双精度浮点数,负数范围从
-1.79769313486232E308 到 -4.94065645841247E-324,
正数范围从 4.94065645841247E-324 到
1.79769313486232E308。
包含表示日期的数字,日期范围从公元 100 年 1 月 1
日到公元 9999 年 12 月 31 日。
包含变长字符串,最大长度可为 20 亿个字符。
包含对象。
包含错误号。
2.2 VBScript数据类型(续)
• 可以使用转换函数来转换数据的子类型
• 可使用 VarType 函数返回数据的
Variant 子类型。
2.3 VBScript常量
• 常量:是具有一定含义的名称,用于代
替数字、字符串等常数。
• 常量一经声明,其值不再改变,可在程
序任何地方代替特定的数值。
• VBScript 定义了许多固有常数。详细信
息,请参阅 VBScript 语言参考。
常量声明方法
• 可用 Const 语句在 VBScript 中创建
用户自定义常数。
Const PI=3.1415926
Const ConstNumber=2000
Const ConstString=“上海埔东”
Const ConstDate=#2003-3-15#
常量声明方法(续)
• 最好采用一个命名方案以区分常量和变
量。这样可以避免在运行 Script 时对
常量重新赋值。例如,可以使用“vb”
或“con”作常数名的前缀,或将常数名
的所有字母大写。将常量和变量区分开
可以在开发复杂的 Script 时避免混乱
。
2.4 VBScript变量
• 变量:存储在内存中的用来包含信息的
地址的名字。
• 只要通过引用变量名就可以查看或更改
变量的值。在 VBScript 中只有一个基
本数据类型,即Variant,因此所有变
量的数据类型都是Variant。
2.4.1 变量声明
• 变量声明:声明变量的一种方式是使用
Dim 语句在 Script 中显式声明变量
• 声明单个变量
Dim name
• 声明多个变量时,使用逗号分隔变量。
Dim Top, Bottom, Left, Right
2.4.1 变量声明(续1)
• 直接在 Script 中使用变量名来隐式声
明变量。这通常不是一个好习惯,因为
这样有时会因变量名拼错而导致在运行
时出现意外的结果。因此,最好使用
Option Explicit 语句强制显式声明所
有变量,并将其作为 Script 的第一条
语句。
2.4.2 VBScript变量举例
<%
Option Explicit
Dim a,b,c
a=1
b=2
c=a+b
%>
2.4.3 变量命名规则
命名规则:变量命名必须遵循 VBScript 的
标准命名规则。变量命名必须遵循:
(1)第一个字符必须是字母。
(2)不能包含嵌入的句点。
(3)长度不能超过 255 个字符。
(4)在被声明的作用域内必须唯一。
2.4.4 变量的作用域
变量的作用域由声明它的位置决定。如
果在过程中声明变量,则只有该过程中
的代码可以访问或更改变量值,此时变
量具有局部作用域,并被称为过程级变
量。如果在过程之外声明变量,则该变
量可以被 Script中所有过程所识别,
称为 Script 级(也全局级)变量,具有
Script级作用域。
2.4.5 变量存活期
变量存在的时间称为存活期。Script级变量的
存活期从被声明的一刻起,直到 Script 运
行结束。对于过程级变量,其存活期仅是该
过程运行的时间,该过程结束后,变量随之
消失。在执行过程时,局部变量是理想的临
时存储空间。可以在不同过程中使用同名的
局部变量,这是因为每个局部变量只被声明
它的过程识别。
2.5 VBScript数组
• 多数情况下,只需为声明的变量赋一个
值。只包含一个值的变量被称为标量变
量。有时候,将多个相关值赋给一个变
量更为方便,因此可以创建包含一系列
值的变量,称为数组变量。
• 数组的命名、声明、赋值和使用与普通
变量基本相同,区别在于要定义数组中
的项目数。
2.5.1 VBScript数组举例
<%
Dim a(2)
a(0)=10
a(1)=20
a(2)=30
Sum= a(0)+ a(1)+ a(2)
%>
2.5.1 VBScript数组举例
<%
Dim MyTable(1,2) ‘2行3列数组
MyTable(0,0)="语文"
MyTable(0,1)="数学"
MyTable(1,0)=90
MyTable(1,1)=100
Response.Write MyTable(0,0)
Response.Write MyTable(1,0)
%>
2.5.2 VBScript动态数组
• 动态数组,即在运行Script时其项目个
数发生变化的数组。
• 声明动态数组:对数组的最初声明不确
定大小,即括号中不包含任何数字,使
用时再用ReDim 确定维数和每一维的大
小。
2.5.2 VBScript动态数组举例
<%
Dim a()
Redim a(3)
a(3)=“上海”
Redim a(5)
a(5)=“深圳”
%>
‘定义一个变长数组
‘使用时Redim该数组
‘可以多次Redim该数组
2.6 VBScript运算符
•
•
VBScript 有一套完整的运算符,包括算术运
算符、比较运算符、连接运算符和逻辑运算
符。
当表达式包含多个运算符时,将按预定顺序
计算每一部分,这个顺序被称为运算符优先
级。可以使用括号越过这种优先级顺序,强
制首先计算表达式的某些部分。运算时,总
是先执行括号中的运算符,然后再执行括号
外的运算符。但是,在括号中仍遵循标准运
算符优先级。
2.6 VBScript运算符(续)
• 当表达式包含多种运算符时,首先计算
算术运算符,其次连接运算符,然后计
算比较运算符,最后计算逻辑运算符。
所有比较运算符的优先级相同,即按照
从左到右的顺序计算比较运算符。
算术运算符
符号
描述
求幂
^
比较运算符
描述
符号
等于
=
负号
乘
除
*
/
不等于
整除
求余
加
减
\
Mod
+
-
小于等于
字符串
连接
&
小于
大于
大于等于
对象引用比较
<>
<
>
<=
>=
Is
逻辑运算符
描述
符号
逻辑非
Not
逻辑与
逻辑或
逻辑异或
逻辑等价
逻辑隐含
And
Or
Xor
Eqv
Imp
2.7 VBScript函数
• 函数是系统提供的实用功能,恰当使用
已有的函数可以得到很多便利。
2.7.1 转换函数
• 在使用过程中,Variant变量一般会根据
需要自动转换成合适的数据类型;但有
时,自动转换有可能造成数据类型不匹
配错误。此时,就应使用VBScript的转
换函数来强制转换数据的子类型。
<%
”
%>
Num=1000
StrWelcom=“欢迎第”&CStr(Num)&”个来访者
2.7.1 转换函数(续)
函 数
CStr(Variant)
功 能
将变量Variant转换为字符串类型
CDate(Variant) 将变量Variant转换为日期类型
CInt(Variant)
将变量Variant转换为整数类型
CLng(Variant)
将变量Variant转换为长整数类型
CSng(Variant)
将变量Variant转换为Single类型
CDbl(Variant)
将变量Variant转换为Double类型
CBool(Variant) 将变量Variant转换为布尔类型
2.7.2 输入/输出函数
• 输入、输出函数只能在客户端运行,不
能在服务器端运行,因为它们要在客户
端弹出窗口。
• 输入、输出函数作用很大,因为信息验
证类事务如放在客户端进行,既能减轻
服务器负担,有能提高执行效率。
2.7.2 输入/输出函数(续1)
• 输出函数
MsgBox(prompt[,button][,title])
prompt:显示窗口中的提示信息
button: 指定窗口外观和按钮类型
title:
显示窗口标题中的文字
说明:[…]中为可选项
2.7.2 输入/输出函数(续2)
• 输入函数
String=InputBox(prompt [,title][,default])
String:用户输入的内容
prompt:显示窗口中的提示信息
title:显示窗口标题中的文字
default:指定窗口中的文本输入框内的默认字
符串,即默认输入内容
说明:[…]中为可选项
2.7.2 输入/输出函数举例
<html>
<head>
<title>InputBox和MsgBox用法示例</title>
</head>
<body>
<script language="VBScript">
Option Explicit
'强制要求变量必须声明
Dim Name1,Name2
'声明变量
Name1=InputBox("金庸小说中你最喜欢的人物第一是","输入名称")
Name2=InputBox("金庸小说中你最喜欢的人物第二是","输入名称")
MsgBox Name1 & “和” & Name2 & “是金庸小说中你最喜欢的两个人
物”
</script>
</body>
</html>
2.7.3 字符串函数
• 字符串用途广泛,如用户注册时输
入的用户名、密码等信息,留言板
中的留言标题、内容、留言人等信
息,都是作为字符串处理的。
<%
user_name=Ucase(“Zhu rongji”)
StrTemp=Mid(“He is a good prime minister”,9,4)
%>
函 数
功 能
Len(string)
返回字符串string里的字符个数
Trim(string)
将字符串string的前后空格去掉
Mid(string,start[,length])
从string的第start个字符开始截取长度为
length的子字符串;如省略参数length,则从
start开始截取到string的最后一个字符
Left(string,length)
从string的左边截取长度为length的子字符串
Right(string,length)
从string的右边截取长度为length的子字符串
LCase(string)
将string里的所有大写字母转换为小写字母
UCase(string)
将string里的所有小写字母转换为大写字母
StrComp(str1,str2)
返回str1和str2的比较结果,同,则为0;大,
为1;小为,-1
2.7.3 日期与时间函数
• 在VBScript中,可以用日期和时间函
数得到各种格式的日期和时间,如
留言板里经常用Date()来记载留言日
期。
• 常用日期和时间函数如下表:
常用日期与时间函数
函 数
功 能
Now()
取得系统当前日期和时间
Date()
取得系统当前日期
Time()
取得系统当前时间
Month(Date)
取得给定日期的月份
Day(Date)
取得给定日期是几号
WeekDay(Date)
取得给定日期是星期几
Year(Date)
取得给定日期的年份
常用日期与时间函数
函 数
功 能
DateDiff(“Var”,Var1,Var2)
计算日期或时间Var1与Var2的间隔
“Var”:为时间间隔因子
DateAdd(“Var”,Var1,Var2)
Var1:日期或时间间隔倍数
Var2:日期或时间的基准
对时间/日期Var2作加法
FormatDateTime(Date,vbShortDate) 显示短日期格式
FormatDateTime(Date,vbLongDate) 显示长日期格式
FormatDateTime(Date,vbShortTime) 显示短时间格式
FormatDateTime(Date,vbLongTime) 显示长时间格式
日期与时间间隔因子
间隔因子
yyyy
m
d
ww
h
s
说明
年
月
日
星期
小时
秒
<% Option Explicit
'放在程序首行,强制变量声明 %>
<html>
<head>
<title>日期和时间函数的用法示例</title>
</head>
<body>
<%
Dim Output1,Output2,Output3
'声明变量
Output1="日期:"&Date()
Output2="时间:"&Time()
Output3="日期与时间:"&Now()
%>
<%=Output1%><br>
<%=Output2%><br>
<%=Output3%><br>
</body>
</html>
程序3.2.asp的结果
常用数学函数
函 数
功 能
Abs(number)
返回一个数的绝对值
Sqr(number)
返回一个数的平方根
Int(number)
取number的最大整数部分
Cos(number)
Sin(number)
Log(number)
Tan(number)
Rnd(number)
返回一个随机数
检验函数
函 数
功
能
VarType(Variant)
返回变量Variant的数据子类型
IsEmpty(Variant)
检查变量Variant是否为Empty
IsNull(Variant)
检查变量Variant是否为Null
IsObject(Variant)
检查变量Variant是否为对象类型
IsNumberic(Variant)
检查变量Variant是否为数值类型
IsArray(Variant)
检查变量Variant是否为数组类型
IsDate(Variant)
检查变量Variant是否为日期类型
2.7.5 检验函数示例
<%
varTemp=“ASP”
If IsNumberic(varTemp) Then
Response.Write “是数值类型”
Else
Response.Write “不是数值类型”
End If
%>
2.8 条件语句
使用条件语句可以控制 Script 的流程,使用
条件语句可以编写进行判断操作的
VBScript 代码。在VBScript中可使用以下条
件语句:
If...Then...Else 语句
Select Case 语句
2.8 If 语句
If语句用于计算<条件>是否为 True 或 False,
并且根据计算结果指定要运行的语句。通常,
<条件>是使用比较运算符对值或变量进行比较
的表达式。通常有如下几种格式:
• 格式1
If <条件> Then
<语句>
Endif
2.8 If 语句(续2)
• 格式2
If <条件> Then
<语句1>
Else
<语句2>
Endif
• 格式3
If <条件1> Then
<语句1>
ElseIf <条件1> Then
<语句2>
……
Else
<语句n+1>
Endif
2.8.1 If 语句举例
条件为 True 时运行单行语句:
<%
Dim myDate myDate = #2/13/95#
If myDate < Now Then
myDate = Now()
End if
%>
2.8.1 If 语句举例(续1)
条件为 True 时运行多行语句:
If value = 0 Then
AlertLabel.ForeColor=vbRed
AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True
End If
2.8.1 If 语句举例(续2)
条件为 True 和 False 时分别运行某些语句:
If value = 0 Then AlertLabel.ForeColor =
vbRed AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True Else
AlertLabel.Forecolor = vbBlack
AlertLabel.Font.Bold = False
AlertLabel.Font.Italic = False
End If
2.8.1 If 语句举例(续3)
对多个条件进行判断
If value = 0 Then MsgBox value
ElseIf value = 1 Then
MsgBox value
ElseIf value = 2 then
Msgbox value Else Msgbox “数值超出范围!”
End If
2.8.1 If 语句举例(续4)
<%
Dim Grade
Grade=86
‘为简单计,直接赋值,通常应为参数
If Grade>=85 Then
Response.write "太不可思议了,你太厉害了"
Elseif Grade>=70 and Grade<85 Then
Response.write "不错啊,继续努力吧"
Elseif Grade>=60 and Grade<70 Then
Response.write "有点差,还需努力"
Else
Response.write "我无话可说"
End if
%>
2.8.2 Select Case 语句
Select Case 结构提供了If结构的
一个变通形式,可以从多个语句块中选
择执行其中的一个。Select Case 语句
提供的功能与 If语句类似,但是可以使
代码更加简练易读。
Select Case <表达式>
Case <结果1>
<语句1>
Case <结果2>
<语句2>
……
Case <结果n>
<语句n>
Case Else
<语句n+1>
End Select
2.8.2.1 Select Case 语句格式
Select Case <表达式>
Case <结果1>
<语句1>
Case <结果2>
<语句2>
……
Case <结果n>
<语句n>
Case Else
<语句n+1>
End Select
说明:首先计算<表
达式>,然后用该结果依
次与<结果1>、 <结果
2>、… 、<结果n>进行
比较,执行第一个与之
匹配的结果相对应的语
句,执行完毕后就跳出
Select Case语句;没有
找到匹配,就执行Case
Else后面的<语句n+1>。
2.8.2.2 Select Case 语句举例
Select Case Document.Form1.CardType.Options(SelectedIndex).Text
Case "MasterCard"
DisplayMCLogo
ValidateMCAccount
Case "Visa"
DisplayVisaLogo
ValidateVisaAccount
Case "American Express"
DisplayAMEXCOLogo
ValidateAMEXCOAccount
Case Else
DisplayUnknownImage
PromptAgain
End Select
2.8.2.2 Select Case语句举例(续)
Dim Grade
Grade="D"
Select Case Grade
Case "A"
Response.write
Case "B"
Response.write
Case "C"
Response.write
Case ELse
Response.write
End Select
"太不可思议了,你太厉害了"
"不错啊,继续努力吧"
"有点差,还需努力"
"我无话可说"
2.9 循环语句




循环用于重复执行一组语句。循环可分为三类:一类
在条件变为 False 之前重复执行语句,一类在条件变
为 True 之前重复执行语句,另一类按照指定的次数
重复执行语句。
在 VBScript 中可使用下列循环语句:
Do...Loop: 当(或直到)条件为 True 时循环。
While...Wend:当条件为 True 时循环。
For...Next: 指定循环次数,用计数器重复运行语句。
For Each...Next: 对于集合中的每项或数组中的每
个元素,重复执行一组语句。
2.9.1 For…Next循环
For...Next 语句用于将语句块运行指定的次
数。在循环中使用计数器变量,该变量的值随
每一次循环增加或减少。
格式:
For counter=start To end [Step step]
<语句组>
Next
2.9.1.1 For…Next循环例
<%
Dim Sum,I,N
Sum=0
N=100
'N值可以是其它地方传过来的值,这里
简单的赋值。
'循环,从1加到N
For I=1 to N
Sum=Sum+I
Next
Response.write "1+2+3+…+" & Cstr(N) & "=" & Cstr(Sum)
%>
2.9.1.1 For循环例(续)
<Script Language=“VBScript”>
Dim j, total
For j = 2 To 10 Step 2
total = total + j
Next
MsgBox “总和为:" & total & "。"
</Script>
2.9.1.2 Exit For退出循环
Exit For 语句
用于在计数器达到其终止值之前退出 For...Next 语
句。因为通常只是在某些特殊情况下(例如在发生错
误时)要退出循环,所以可以在 If...Then...Else
语句的 True 语句块中使用 Exit For 语句。如果条
件为 False,循环将照常运行。
2.9.1.2 Exit For退出循环例
<%
Sum=0
N=1000
For I=1 to N
Sum=Sum+I
If Sum>10000 Then
Exit For
End If
Next
%>
2.9.2 Do…Loop循环
 当条件为 True 时重复执行语句
While 关键字用于检查 Do...Loop 语句中的条件。有两种方式检
查条件:在进入循环之前检查条件;或者在循环至少运行完一次
之后检查条件
 格式一(入口型):
Do While <条件>
<语句>
Loop
 格式二(出口型):
Do
<语句>
Loop While <条件>
2.9.2 Do…Loop循环(续)

重复执行语句直到条件变为 True
Until 关键字用于检查 Do...Loop 语句中的条件。有两种方式
检查条件:在进入循环之前检查条件;或者在循环至少运行完一
次之后检查条件。只要条件为 False,就会进行循环。
 格式三(入口型):
Do Until <条件>
<语句>
Loop
 格式四(出口型):
Do
<语句>
Loop Until <条件>
2.9.2.1 Do…Loop循环例
<Script Language="VBScript">
Dim counter, myNum
counter = 0
myNum = 20
Do While myNum > 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "循环重复了 " & counter & " 次。"
</Script>
2.9.2.1 Do…Loop循环例
<Script Language="VBScript">
Dim counter, myNum
counter = 0
myNum = 20
Do
myNum = myNum - 1
counter = counter + 1
Loop While myNum > 10
MsgBox "循环重复了 " & counter & " 次。"
</Script>
2.9.2.1 Do…Loop循环例
<%
Dim Sum,I
Sum=0
I=1
Do While I<=100
Sum=Sum+I
I=I+1
Loop
Response.Write “1+2+3+…+100=”&CStr(Sum)
%>
2.9.2.1 Do…Loop循环例
<Script Language="VBScript">
Dim counter, myNum
counter = 0
myNum = 1
Do
myNum = myNum + 1
counter = counter + 1
Loop Until myNum = 10
MsgBox "循环重复了 " & counter & " 次。"
</Script>
2.9.2.1 Do…Loop循环例
<Script Language="VBScript">
Dim counter, myNum
counter = 0
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "循环重复了 " & counter & " 次。"
</Script>
2.9.2.2 退出循环
Exit Do语句
用于退出 Do...Loop 循环。因为通常只是在某些特殊
情况下要退出循环(例如要避免死循环),所以可在
If...Then...Else 语句的 True 语句块中使用 Exit
Do 语句。如果条件为 False,循环将照常运行。
2.9.2.2 退出循环例
<Script Language="VBScript">
Dim counter, myNum
counter = 0
myNum = 9
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
If myNum < 0 Then Exit Do
Loop
MsgBox "循环重复了 " &counter & " 次。"
</Script>
2.9.3 While...Wend循环
格式:
While <条件>
<语句>
Wend
<%
Dim I
I=1
While I<10
I=I+1
Wend
%>
2.9.4 For Each...In循环
格式:
For Each <元素> In <集合>
<语句>
Next
说明:对<集合>中的每一个<元素> 依次执
行<语句>一次。
2.9.5 VBScript过程
• 在VBScript中,过程有两种: (1) Sub子程序;
(2)Function函数
• 区别: Sub子程序只执行程序,而返回值;
Function函数可以将执行程序后的结果
返回非请求程序
2.9.5.1 Sub子程序
• 格式一
Sub <子程序名>(参数1,参数1,…)
……
End Sub
• 格式二
Sub <子程序名>()
……
End Sub
2.9.5.1 Sub子程序(续)
• Sub过程调用方法
使用Call语句:
Call <子程序名>(参数1,参数1,…)
不使用Call语句:
<子程序名> 参数1,参数1,…
2.9.5.1 Sub子程序例
<%
Dim user_name
'声明一个变量作为实参
user_name=“校长"
Call Welcome(user_name)'调用子程序,显示欢迎信息
'下面是子程序,用来显示欢迎用户的信息
Sub Welcome(Name)
Dim StrWelcome
'不能再声明Name了
StrWelcome=Name&":你好,欢迎光临寒舍!"
Response.Write StrWelcome
End Sub
%>
2.9.5.2 Function函数
• 格式一
Function <函数名>(参数1,参数1,…)
……
End Funcion
• 格式二
Function <函数名>()
……
End Funcion
2.9.5.2 Function函数(续)
• 函数调用:
直接引用函数名,并且要在赋值语句的右边或
表达式中,如:
SubStr = Mid(SourceStr,Start,length)
Result = MyFuncion(x,y)
2.9.5.2 Function函数例
<%
'下面是函数,用来计算两个数的立方
Function CountSum(a,b)
‘a,b为形式参数,在函数被调用时,其值由实际参数给出,
‘所以此处不能再定义
CountSum=a^3+b^3
End Function
Dim Result
Result=CountSum(5,9)
'调用函数,计算5和9的立方和
Response.write "5和9的立方和等于"& Cstr(Result)
%>