600 likes | 796 Views
ASP. 2003ï¼4ï¼16. ä¸ç‘žå½ dingrp@infosec.pku.edu.cn. What ’ s ASP?. Active Server Pages ( å³ï¼Œ 活动æœåŠ¡å™¨é¡µé¢ ) 䏿˜¯ä¸€é—¨è¯è¨€ï¼Œè€Œæ˜¯ä¸€ä¸ªç¼–程环境 在其ä¸ï¼Œå¯ä»¥æ··åˆä½¿ç”¨ HTML〠脚本è¯è¨€ä»¥åŠç»„ä»¶æ¥åˆ›å»ºæœåŠ¡å™¨ç«¯åŠŸèƒ½å¼ºå¤§çš„ Internet 应用程åºã€‚ Asp 文件以. asp 作为åŽç¼€ Asp 文件: Html + Scripts ( å®¢æˆ·ç«¯ã€æœåŠ¡å™¨ç«¯). < html> <head><title>ASP Script 示例 </ title></head> <body>
E N D
ASP 2003-4-16 丁瑞彭 dingrp@infosec.pku.edu.cn
What’s ASP? • Active Server Pages (即,活动服务器页面) • 不是一门语言,而是一个编程环境 • 在其中,可以混合使用HTML、脚本语言以及组件来创建服务器端功能强大的Internet应用程序。 • Asp文件以.asp作为后缀 • Asp文件:Html + Scripts (客户端、服务器端)
<html> <head><title>ASP Script 示例</title></head> <body> 这是个 <% for I=1 to 10 %> 非常, <% next %> 非常长的句子。 </body> </html> 这是个非常,非常,非常,非常,非常,非常,非常,非常,非常,非常,非常长的句子。
What’s ASP? • 1、Active:ASP使用了Microsoft的ActiveX技术。ActiveX(COM)技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。ASP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件。只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速、简易地建立自己的WEB应用
What’s ASP? • 2、Server:ASP运行在服务器端。这样就不必担心浏览器是否支持ASP所使用的编程语言。ASP的编程语言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一个简集,会VB的人可以很方便的快速上手。然而Netscape浏览器不支持客户端的VBSCRIPT,所以最好不要在客户端使用VBSCRIPT。而在服务器端,则无需考虑浏览器的支持问题。Netscape浏览器也可以正常显示ASP页面
What’s ASP? • 3、Pages:ASP返回标准的HTML页面,可以正常地在常用的浏览器中显示。浏览者查看页面源文件时,看到的是ASP生成的HTML代码,而不是ASP程序代码。这样就可以防止别人抄袭程序
What can ASP do? • ASP可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。 • 从HTML的form中接受信息并且存到数据库中 • 在你的主页中添加点击计数器 • 根据用户浏览器的版本,类型和能力显示不同档次的内容。 • 跟踪用户网站上的活动信息并且存入日志文件 • 留言簿、公告板、聊天室……
Active Server Pages的工作方法 • 下面比较获取Active Server Pages的过程和访问普通HTML页面的过程
Page1.htm Page2.htm Page1.htm 2.HTTP请求 4.HTTP回应 服务器端 客户端 访问普通HTML页面的过程 3 1 IIS 5
访问普通HTML页面的过程 1. 用户将HTML文件的Internet地址,输入到浏览器地址栏,按回车键请求一个网页(如:http://www.somesite.com/hello.htm)。 2. 浏览器发送网页请求到网络服务器,如IIS(Internet Information Server)。 3. 网络服务器收到请求,通过扩展名.htm或.html判断出是HTML文件的请求。 4. 网络服务器将适当的HTML文件从磁盘或存储器中获取并送回浏览器。 5. HTML文件由用户的浏览器解释,结果在浏览器窗口中显示。
访问Active Server Page的过程 Active Server Pages.dll IIS HTTP请求 HTTP回应 服务器端
访问Active Server Page的过程 • 用户将一个Active Server Page文件的Internet网址输入到网络浏览器地址栏,按回车请求一个Active Server Page网页(如http://www.somesite.com/hello.asp)。 • 浏览器向IIS发送Active Server Page请求。 • 服务器收到请求并根据扩展名.asp识别出Active Server Page文件。 • 服务器从硬盘或内存中获取适当的Active Server Page文件。
访问Active Server Page的过程 5. 服务器向特定的名为Active Server Pages.dll程序发送文件。 6. 从上向下处理Active Server Page文件,执行遇到的命令。处理结果是标准的HTML文件。 7. HTML文件被送回浏览器。 8. 用用户的Web浏览器解释HTML文件,结果在浏览器窗口显示。
比较 • 从Web服务器来看,一个Active Server Page与普通HTML页面是不同的。普通HTML文件不经处理就发送至浏览器。另一方面,Active Server Page中的所有命令都要先执行再创建HTML页面。这允许Active Server Page包含动态内容。 • 另一方面,从浏览器来看,Active Server Page几乎同HTML页完全一样。唯一的不同是Active Server Page必须以扩展名.asp而不是.htm或.html结束。发出Active Server Page请求后,浏览器收到一个普通的HTML页。这使Active ServerPage可与所有的浏览器兼容。
如何写ASP程序? • Asp文件:Html + Scripts (客户端、服务器端) • Html内容已经介绍过了 • 客户端脚本:javascript也介绍过了 • 服务器端脚本:可以选用VBScript,也可以选用Jscript • 我们选VBScript
把VBScript的脚本集成到Active Sever Pages中 • 最容易的方法是使用两个特殊字符<%和%> (使用的是默认的脚本语言,或者用下面的方法指定的语言) • 还可为某特定页面规定主要脚本语言。这需要将LANGUAGE指令放在Active ServerPage文件的首行,如下面的例子:<%@LANGUAGE=Jscript %> 这个指令表明文件中的所有脚本都应作为JScript,而不是其他脚本语言创建的脚本来执行。
把VBScript的脚本集成到Active Sever Pages中 • 还可用Microsoft扩展的<SCRIPT>HTML标签将脚本包含在Active Server Pages中 • 例如: <SCRIPT LANGUAGE="JScript" RUNAT="server"> function sayhello() {response.write("Hello!")} </SCRIPT> <%sayhello() %> 规定了使用的脚本语言 表明脚本应在服务器而不是客户机(浏览器)上执行
符号对<%和%>与符号对<%=和%> • 例子:下面的ASP网页在网页顶部打印当前的日期和时间: <HTML> <HEAD> <TITLE> Simple VBScript</TITLE> </HEAD> <BODY> This page was created on :<%=NOW%> <BR>Have a nice day! </BODY> </HTML>
符号对<%和%>用来指明一个脚本 • 而符号对<%=和%>用来指明变量或函数的值。跟在表达式<%=后面的任何内容都将被打印在浏览器窗口中。 • 不要把没有返回值的VBScript命令放在符号对<%=和%>之间 例如:<%=FOR I=1 TO 100%> No!
VBScript • VBScript 数据类型 • VBScript 变量 • VBScript 常数 • VBScript 运算符 • 使用条件语句 • 使用循环语句 • VBScript 过程 • 对代码进行注释
VBScript 数据类型 • VBScript 只有一种数据类型,称为 Variant。Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant是 VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。 • 除简单数字或字符串以外,Variant可以进一步区分数值信息的特定含义。 Variant包含的数值信息类型称为子类型
转换函数 • Asc 函数CBool 函数CByte 函数CCur 函数CDate 函数CDbl 函数Chr 函数CInt 函数CLng 函数CSng 函数CStr 函数Hex 函数Oct 函数
VBScript 变量 • 什么是变量? 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息。例如,可以创建一个名为 ClickCount 的变量来存储用户单击 Web 页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。
声明变量 • 声明变量的一种方式是使用Dim语句在 Script 中显式声明变量。例如: Dim sars 声明多个变量时,使用逗号分隔变量。例如: Dim Top, Bottom, Left, Right • 另一种方式是通过直接在 Script 中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行 Script 时出现意外的结果。因此,最好使用 Option Explicit语句显式声明所有变量,并将其作为 Script 的第一条语句。
命名规则 • 变量命名必须遵循 VBScript 的标准命名规则。变量命名必须遵循: 第一个字符必须是字母。 不能包含嵌入的句点。 长度不能超过 255 个字符。 在被声明的作用域内必须唯一。
变量的作用域与存活期 • 变量的作用域由声明它的位置决定。 • 如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。 • 如果在过程之外声明变量,则该变量可以被 Script 中所有过程所识别,称为 Script 级变量,具有 Script 级作用域。
变量存在的时间称为存活期。Script 级变量的存活期从被声明的一刻起,直到 Script 运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。
给变量赋值 • 创建如下形式的表达式给变量赋值:变量在表达式左边,要赋的值在表达式右边。例如: B = 200
标量变量和数组变量 • 多数情况下,只需为声明的变量赋一个值。 • 只包含一个值的变量被称为标量变量。 • 有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。 例如:Dim A(10) 这个DIM语句声明了一个可以存储11个值的数组。
在数组中使用索引为数组的每个元素赋值。如下所示: A(0) = 256 A(1) = 324 . . . A(10) = 55 与此类似,使用索引可以检索到所需的数组元素的数据。例如: SomeVariable = A(8) . . .
数组并不仅限于一维。数组的维数最大可以为 60(尽管大多数人不能理解超过 3 或 4 的维数)。 Dim MyTable(5, 10)
VBScript 常数 • 什么是常数? 常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。 创建常数 可以使用 Const语句在 VBScript 中创建用户自定义常数。使用 Const语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如: Const MyString = “这是一个字符串。” Const MyAge = 49
VBScript 运算符 • 算术运算符 • 比较运算符 • 连接运算符 • 逻辑运算符
优先级 • 当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。
使用条件语句 • 控制程序执行 使用条件语句和循环语句可以控制 Script 的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。在 VBScript 中可使用以下条件语句: If...Then...Else语句 Select Case语句
使用 If...Then...Else 进行判断 • If...Then…[Else…]语句用于计算条件是否为 True或 False,并且根据计算结果指定要运行的语句。通常,条件是使用比较运算符对值或变量进行比较的表达式。 • myDate = #2/13/95# If myDate < Now Then myDate = Now
If中要运行多行代码,必须使用多行(或块)语法。多行(或块)语法包含 End If语句,如下所示: • If value = 0 Then AlertLabel.ForeColor=vbRed AlertLabel.Font.Bold=True AlertLabel.Font.Italic=True End If
If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 then Msgbox value Else Msgbox “数值超出范围!” End If 可以添加任意多个 ElseIf子句以提供多种选择。使用多个 ElseIf子句经常会变得很累赘。在多个条件中进行选择的更好方法是使用 Select Case语句。
使用 Select Case 进行判断 • Select Case结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case的值比较。如果匹配,则执行与该 Case关联的语句块:
Select Case text Case “a“ sub_a Case “b" sub_b Case “c" sub_c Case Else sub_d End Select
使用循环重复执行代码 • 在 VBScript 中可使用下列循环语句: • Do...Loop: 当(或直到)条件为 True时循环。 • While...Wend: 当条件为 True时循环。 • For...Next: 指定循环次数,使用计数器重复运行语句。 • For Each...Next: 对于集合中的每项或数组中的每个元素,重复执行一组语句。
使用 Do 循环 • 当条件为 True 时重复执行语句 Dim counter, myNum counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "循环重复了 " & counter & " 次。"
重复执行语句直到条件变为 True,只要条件为 False,就会进行循环。 • Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "循环重复了 " & counter & " 次。"
退出循环 • Exit Do语句用于退出 Do...Loop循环。 • Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum < 10 Then Exit Do Loop MsgBox "循环重复了 " & counter & " 次。
使用 While...Wend • While...Wend语句是为那些熟悉其用法的用户提供的。但是由于 While...Wend缺少灵活性,所以建议最好使用 Do...Loop语句。
使用 For...Next • For...Next语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。 • Dim x For x = 1 To 50 MyProc Next
关键字 Step用于指定计数器变量每次增加或减少的值。 • Dim j, total For j = 2 To 10 Step 2 total = total + j Next