课件115张PPT。ASP网络程序设计第一章 ASP简介1. 网络程序设计语言介绍
2 . ASP运行环境
3. ASP语法简介
4. ASP开发工具与调试技巧
重点: (1) ASP、PHP和JSP的各自特点 (2) ASP的环境配置
1. 网络程序设计语言介绍产生背景
国际互联网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)
前台:网页浏览器BrowserASP概述(续1)ASP文件:在普通HTML文件中嵌入
VBScript/JavaScript脚本语言。
?在ASP中,脚本在服务器端运行,当客户请求一个ASP文件时,服务器就把文件解释成标准的HTML文件发回客户端。
?在服务器端运行的好处:不受客户端浏览器限制,便于和服务器交换数据,如存取数据库。ASP的优点VBScript源自VB,简单易学;
脚本语言直接嵌入HTML文档,无需编译、连接就可以解释执行;
利用ADO组件轻松存取数据库;
面向对象编程,可扩展ActiveX Server组件功能;
不存在浏览器兼容问题;
可隐藏源程序代码。ASP的缺点运行速度比HTML慢;
ASP一般限于Windows NT/2000平台。PHP概述PHP:超文本预处理器(PHP: Personal
Hypertext Preprocessor)。
1994:Rasmus Lerdorf首先提出
1997:Zeev Suraski、Andi Gutamns
加以完善,PHP 3
后台:Unix/Linux/Windows均可;
前台:网页浏览器BrowserPHP概述(续1)PHP文件:在普通HTML文件中嵌入脚本语
言,类似C/Java/Perl。
?与ASP一样,脚本在服务器端运行,不受客户端浏览器限制,便于存取数据库。PHP的优点PHP是完全免费的,可以从PHP官方站点(http://www.php.net)自由下载。
PHP的源代码开放;
多平台支持;
不受客户端浏览器限制;
与ASP相比,PHP占用系统资源较少,执行效率较高。
PHP的缺点运行环境的安装、配置比较复杂;
相对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的优点多平台支持;
编译后运行,执行效率高;
JSP采用Java技术,而Java作为一个成熟的跨平台的程序设计语言,几乎可以实现任何想要实现的功能。JSP的缺点开发运行环境比ASP复杂;
相对ASP的VBScript而言,Java稍难。选择ASP的理由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:intepubwwwroot ,用户最好另建自己的虚拟目录3. ASP语法简介ASP文件就是在普通HTML文件中嵌入 VBScript /JavaScript脚本语言。
?过去开发网页也用脚本语言,但以前的脚本语言是在客户端运行,客户端浏览器必须支持才行。
?在ASP中,脚本在服务器端运行,当客户请求一个ASP文件时,服务器就把文件解释成标准的HTML文件发回客户端。
3.1 ASP文件的基本组成和约定ASP程序包括3个部分:
普通的HTML文件;
Server端的Script代码,位于<% … %>之间的程序代码
客户端的代码,位于之间的程序代码。
3.1 ASP文件的基本组成和约定(注意事项)? 在ASP中,VBScript是默认的脚本语言,如需改变,可如下进行:
<%@Language=VBScript%>
<%@Language=JavaScript%>
? 由于ASP是在Server端执行,而VBScript的用户界面方法(如InputBox和MsgBox)是在Client端执行,故在ASP中就不能使用了。3.2 ASP文件举例
一个简单的ASP程序 欢迎您光临我的主页
<%
n=Year(date())
y=Month(date())
r=Day(date())
sj="您来访的时间是:" & n & "年" & y & "月" & r & "日"
Response.Write sj '输出结果
%>
3.2 ASP文件举例3.2 ASP文件举例(续)
一个简单的ASP程序 <%For I=1 To 6 %>
欢迎您来访 <%Next%>
3.2 ASP文件举例(续)3.2 ASP文件举例(续)
一个简单的ASP程序 欢迎您来访 欢迎您来访 欢迎您来访 欢迎您来访 欢迎您来访 欢迎您来访 3.3 ASP的开发工具? Microsoft Visual InterDev,可编写、调试,适合多人合作开发大型程序;
? 记事本或其它文本编辑器,*.asp
? EditPlus、FrontPage3.4 ASP的调试技巧? 用编辑器编写,用浏览器调试;
? 阅读出错信息,如错误描述、出错代码行数等,查出原因;
? 将一些语句注释掉,依次逐段调试;
? 在程序中临时添加输出语句,如Response.Write,将中间结果输出来查看,以发现错误。3.5 ASP程序编写注意事项在ASP中,字母不区分大小写;
在ASP中,标点符号均为英文状态下输入的标点符号;但在字符串中无所谓。
普通的HTML元素可以在一行里连续书写,但在ASP中必须分行书写。一条ASP语句就是一行,一行也只能写一条ASP语句。
3.5 ASP程序编写注意事项(续)(4) 如果ASP语句太长,一行写不下,可用续行符“_”(下划线),也可直接写,让它自动换行。
(5) 普通HTML的注释语句为: 。
(6) ASP的注释语句为:
REM 注释内容
‘ 注释内容3.5 ASP程序编写注意事项(续)(7) 在ASP中,<%和%>的位置相对随意,既可以单独占一行,也可以与ASP语句和在一起占一行。
(8) 书写风格,缩进格式,阶梯式,加注释
(9) 在ASP程序中可以包含HTML语句,充分利用FrontPage等编写HTML语句,特别是表格等,在将VBScript脚本插入。第二章 ASP脚本语言VBScript? 脚本语言介于HTML和VB、Java等高级语言之间,更接近高级语言,但比普通高级语言简单易学,功能稍弱。
? ASP本身不是脚本语言,是为嵌入HTML页面的脚本语言提供运行环境。 VBScript、JavaScript,默认VBScript
? 脚本语言程序在Server端执行,放在<%和%>之间;为了某种需要,也可在Cilent端执行。
2.1 VBScript代码的基本格式ASP程序通常将VBScript放在Server端执行
标识方法:
? <% VBScript %>
? 2.1 VBScript代码的基本格式(续) 有时为了某种需要,VBScript也可放在Client端执行,语法格式如下:
2.2 VBScript数据类型? 在VBScript中,只有一种数据类型,称为Variant,也叫变体类型。它也是VBScript 中所有函数的返回值的数据类型。
? Variant是一种特殊的数据类型,根据不同的使用方式,可包含不同数据类别。 Variant变量中保存的数据类型称为数据子类型。如:
Variable=2003
Variable=“2003”
Variable=“上海大学”
Variable=3.1415926
? VBScript可根据赋值自动确定变量的数据子类型。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) ‘使用时Redim该数组
a(3)=“上海”
Redim a(5) ‘可以多次Redim该数组
a(5)=“深圳”
%>2.6 VBScript运算符 ? VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。
? 当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。2.6 VBScript运算符(续)? 当表达式包含多种运算符时,首先计算算术运算符,其次连接运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。2.7 VBScript函数? 函数是系统提供的实用功能,恰当使用已有的函数可以得到很多便利。2.7.1 转换函数? 在使用过程中,Variant变量一般会根据需要自动转换成合适的数据类型;但有时,自动转换有可能造成数据类型不匹配错误。此时,就应使用VBScript的转换函数来强制转换数据的子类型。
<%
Num=1000
StrWelcom=“欢迎第”&CStr(Num)&”个来访者”
%>2.7.1 转换函数(续)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 输入/输出函数举例
InputBox和MsgBox用法示例 2.7.3 字符串函数? 字符串用途广泛,如用户注册时输入的用户名、密码等信息,留言板中的留言标题、内容、留言人等信息,都是作为字符串处理的。
<%
user_name=Ucase(“Zhu rongji”)
StrTemp=Mid(“He is a good prime minister”,9,4)
%>2.7.3 日期与时间函数? 在VBScript中,可以用日期和时间函数得到各种格式的日期和时间,如留言板里经常用Date()来记载留言日期。
? 常用日期和时间函数如下表:常用日期与时间函数常用日期与时间函数日期与时间间隔因子<% Option Explicit '放在程序首行,强制变量声明 %>
日期和时间函数的用法示例 <% Dim Output1,Output2,Output3 '声明变量 Output1="日期:"&Date() Output2="时间:"&Time() Output3="日期与时间:"&Now() %> <%=Output1%>
<%=Output2%>
<%=Output3%>
程序3.2.asp的结果常用数学函数检验函数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
<语句>
Endif2.8 If 语句(续2)? 格式2
If <条件> Then
<语句1>
Else
<语句2>
Endif? 格式3
If <条件1> Then
<语句1>
ElseIf <条件1> Then
<语句2>
……
Else
<语句n+1>
Endif2.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]
<语句组>
Next2.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循环例(续)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循环例2.9.2.1 Do…Loop循环例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循环例2.9.2.1 Do…Loop循环例
2.9.2.2 退出循环 Exit Do语句
用于退出 Do...Loop 循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在 If...Then...Else 语句的 True 语句块中使用 Exit Do 语句。如果条件为 False,循环将照常运行。
2.9.2.2 退出循环例 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 Sub2.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 Funcion2.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)
%>