第 6章 ASP基础
6.1 ASP基础
6.2脚本语言
6.3 ASP的内建对象
6.4 网站数据库技术
6.5动态网页设计举例
6.1.1 ASP简介
1.Active Server Pages 的技术特点
( 1) 使用 VBScript,JScript 等简单易懂的脚本语言,结合 HTML代码,即可快速地完成网站的应用程序 。
( 2) 无须编译,容易编写,可在服务器端直接执行 。
( 3) 使用普通的文本编辑器,即可进行编辑设计 。
( 4) 与浏览器无关 (Browser Independence),用户端只要使用可执行
HTML代码的浏览器,即可浏览 Active Server Pages 所设计的网页内容 。
( 5) Active Server Pages 能与任何 Activex Scripting 语言相容 。
( 6) Active Server Pages 的源程序,不会被传到客户浏览器 。
( 7) 服务器端的脚本来产生客户端的脚本 。
( 8) 物件导向 ( Object-Oriented ) 。
( 9) Activex Server Components(Activex 服务器元件 ) 具有无限可扩充性
2.ASP的工作机制
当浏览器向 Web服务器请求调用 ASP文件时,就启动了 ASP。 Web服务器响应该 HTTP请求,调用
ASP引擎,解释被申请的文件。当遇到与
active X Script兼容的脚本
( VBScript,JScript)时,ASP引擎调用相应的脚本引擎进行解释处理。若脚本指令中涉及到对数据库的访问,就通过 ODBC与后台数据库进行连接,由数据库访问组件实现对数据库的操作,并将执行结果动态生成一个 HTML页面返回 Web服务器端,然后与页面中非脚本的 HTML
合并成一个完整的 HTML页面送至客户端浏览器。
6.1.2 ASP运行环境
1,ASP的运行环境首先选择操作系统然后就是搭建个人 Web服务器
2,Asp文件的运行
(1) 首先,建立一个 ASP文件,
(2)其次,启动与 Internet相连的计算机上的 Web浏览器,
(3)在浏览器的地址栏输入路径 /文件名,
6.2脚本语言
6.2.1 VBScript介绍
6.2.2基本语法基本数据类型,VBScript 只有一种数据类型,称为 Variant,
Variant 包含的数值信息类型称为子类型,
1,常量常量是在程序运行过程中,值不能被改变的量 。
( 1) 数值常量
( 2) 字符串常量
( 3) 逻辑型常量
( 4) 日期常量
( 5) 符号常量
2.变量在 VBScript 中只有一个基本数据类型,
即 Variant,因此所有变量的数据类型都是 Variant。
( 1) 命名规则
( 2)声明变量
( 3)变量的作用域
4.VBScript 函数算术函数字符函数日期函数转换函数
5.VBScript 运算符
VBScript 包括算术运算符,比较运算符,
连接运算符和逻辑运算符 。
运算符优先级当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,
最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。
6.2.3基本语句
1,赋值语句赋值语句的作用是将一个数据赋给一个变量 。
赋值语句的表现形式为:
Var =表达式
2,条件语句控制程序执行使用条件语句和循环语句可以控制脚本的流程 。 使用条件语句可以编写进行判断和重复操作的 VBScript 代码 。
在 VBScript 中可使用以下条件语句:
If...Then...Else 语句
Select Case 语句条件语句
( 1)用 If...Then...Else 进行判断语句的表现形式为
If <条件 > Then
[语句组 1]
Else
[语句组 2]
End If
T(
真)
F(
假)
条件满足?
语句组 1 语句组 2
End If之后的语句图 6-2 IF语句流程图条件语句 (2)
( 2) Select Case 进行判断
Select Case <选择表达式 >
[Case <值 1>
[ <语句组 1>] ]
[Case <值 2>
[<语句组 2>] ]
……
[Case <值 n>
[ <语句组 n> ] ]
[Case Else
[ <语句组 n+1> ] ]
End Select
测试值 1
测试值 2
测试值 m
程序组 n
程序组 1
程序组 2
程序组 m
T
T
T
F
F
F
图 6-3 select case语句流程图循环语句循环用于重复执行某些操作 。 循环可分为三类:一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句 。
For...Next,指定循环次数,使用计数器重复运行语句 。
Do While(Until)..Loop,当 ( 或直到 ) 条件为 True
时循环 。
For Each...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句 。
6.2.4 数组
1,数组定义数组在使用之前,应先进行数组的定义 。 数组定义的一般格式为:
Dim 数组名 ([下界 To ]上界 )[As 数据类型 ]
2,动态数组动态数组指的是在运行脚本时大小发生变化的数组 。 如果在定义数组时,并未确定数组的维数及每一维的大小,那么在程序设计过程中,可以通过 redim语句对数组的重新声明
6.2.5 VBScript过程在 VBScript 中,过程被分为两类,Sub 过程和 Function
过程 。
6.3 ASP的内建对象
6.3.1 Request对象
Request 对象的语法,
Request[,集合 | 属性 | 方法 ]( 变量 )
Request 对象中包含了 5个数据集合,1个属性
( Totalbytes属性 ) 和 1个方法 ( Binaryread方法 ) 。 5个数据集合分别是,Form数据集合,
Querystring数据集合,Server Variables数据集合,Clientcertificate数据集合和 cookies
数据集合 。
1,Form 数据集合
Form 集合收集来自客户端的以表单形式发往服务器的信息 。
Form的语法:
Request.Form(String参数 )[(索引 )|.计数 ]
String参数:用于指定集合要检索的表格元素的名称 。
[索引 ]:是一个可选参数,使用该参数可以访问某参数中多个值中的一个 。 它可以是 1 到
Request.Form(Parameter),Count之间的任意整数 。
[计数 ]:集合中元素的个数
2,Querystring
Querystring 集合检索 HTTP 查 询 字 符 串 中 变 量 的值,HTTP 查询字符串由问号 (?) 后的值指定 。
通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串 。
如,Http://Student1/Example.Asp?Age=28
Querystring的语法,
Request.Querystring(变量名 )[(索引 )|.计数 ]
Querystring 集合可以让您以名称检索 Query_String 变量 。 Request.Querystring( 参数 ) 的 值 是 出 现 在
Query_String 中 所 有 参 数 的 值 的 数 组 。 通过调用
request.Querystring(Parameter).[计数 ] 可以确定参数有多少个值 。
3.Servervariables数据集合
Servervariables数据集合的功能在于帮助客户端取得服务器端环境信息 。 这些信息,如,客户的 IP地址等等,有时服务器端需要根据不同的客户端信息做出不同的反映,这 时 候 就 需 要 用
Servervariables 集合获取所需信息 。
Servervariables的语法:
Request.Servervariables ( 服务器环境变量 )
4,Cookies
Cookie是一个标签,当你访问一个需要唯一标识你站址的 Web 站点时,它会在你的硬盘上留下一个标记,下一次你访问同一个站点时,站点的页面会查找这个标记。每个 Web 站点都有自己的标记,标记的内容可以随时读取,但只能由该站点的页面完成。
Cookies的语法,
Request.Cookies(Cookie)[(Key)|.Attribute]
参数:
Cookie 指定要检索其值的 Cookie。
Key 可选参数,用于从 Cookie 字典中检索子关键字的值 。
Attribe 指定 Cookie 自身的有关信息 。 如,Haskeys 只读,指定 Cookie 是否包含关键字 。
6.3.2 Response对象
Response的语法
Response.[数据集合 |属性 |方法 ]
1,属性
( 1) Buffer:指示是否缓冲页输出 。
( 2) Charset:将字符集名称附加到 Response 对象中
Content-Type 标题的后面 。
( 3) Contenttype:指定服务器响应的 HTTP 内容类型 。
( 4) Expires,指定了在 浏览器上缓冲存储的页距过期还有多少时间 。
( 5) Expiresabsolute:指定缓存于浏览器中的页面的确切到期日期和时间
2,方法
( 1) Write
可以把信息从服务器端直接送到客户端 。
Write 的 语 法,Response.Write [ 变量 / 字 符 串 ]
( 2) Clear
可以用 Clear 方法清除缓冲区中的所有 HTML 输出。
( 3) End
End 方法使 Web 服务器停止处理脚本并返回当前结果 。
( 4) Flush
Flush 方法立即发送缓冲区中的输出 。
( 5) Redirect
Redirect 方法使浏览器立即重定向到程序指定的 URL。
3,集合
Response 对象只有一个集合 --Cookie
Cookies 集合设置 Cookie 的值 。 若指定的 Cookie
不存在,则创建它 。 若存在,则设置新的值并且将旧值删去 。
语法,
Response.Cookies(Cookie)[(Key)|.Attribute]=
Value
这里的 Cookie 是指定 Cookie 的名称。而如果指定了 Key,则该 Cookie 就是一个字典。
Attribute 指定 Cookie 自身的有关信息。
6.3.3 Sever对象
Server 对象提供对服务器上的方法和属性的访问
Server的语法,Server.[属性 |方法 ]
1.属性
Scripttimeout 超时值,在脚本运行超过这一时间之后即作超时处理 。 如下代码指定服务器处理脚本在 500 秒后超时 。
< % Server.Scripttimeout=500 %>
2,方法
( 1) HTMLEncode 方法
HTMLEncode 方法允许你对特定的字符串进行 HTML 编码,
( 2) URLEncode 方法
可以根据 URL 规则对字符串进行正确编码,
( 3) Mappath 方法
将指定的相对或虚拟路径映射到服务器上相应的物理目录上 。
语法如下,Server.Mappath(Path)
( 4) Createobject 方法
它用于创建已经注册到服务器上的 ActiveX 组件实例。
Createobject的语法如下:
Server.Createobject("Component Name")
6.3.4 Application 对象
1,属性
虽然 Application 对象没有内置的属性,但可以使用以下句法设置用户定义的属性也可称为集合 。
Application(,属性 / 集合名称,)= 值
2,方法
( 1 ) Lock 方 法 禁 止 其 他 客 户 修 改
Application 对象的属性
( 2) 与 Lock 方法相反,Unlock 方法允许其他客户修改 Application 对象的属性
3,事件
( 1) Application_Onstart
Application_Onstart 事件在首次创建新的会话
( 即 Session_Onstart 事件 ) 之前发生。当
Web 服务器启动并允许对应用程序所包含的文件进行请求时就触发 Application_Onstart 事件。
( 2) Application_Onend
Application_Onend 事件在应用程序退出时于
Session_Onend 事 件 之 后 发 生,
Application_Onend 事件的处理过程也必须写在
Global.asa 文件之中 。
6.3.5 Session 对象
1,属性
( 1) Sessionid
Sessionid 属性返回用户的会话标识 。
( 2) Timeout
Timeout 属性以分钟为单位为该应用程序的 Session
对象指定超时时限。
设置 Timeout属性的语法如下:
Session.Timeout=Nminutes
2,方法
Session 对象仅有一个方法,就是 Abandon,Abandon
方法删除所有存储在 Session 对象中的对象并释放这些对象的源 。
3,事件
Session 对象有两个事件,Session_Onend 事件和 Session_Onstart事件。
( 1) Session_Onstart 事件在服务器创建新会话时发生
服务器在执行请求的页之前先处理该脚本。
( 2) Session_Onend 事件在会话被放弃或超时发生
6.4 网站数据库技术
6.4.1 web数据库访问技术
1,ASP访问数据库的原理
ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的 Web服务器程序 。
当用户使用浏览器请求 ASP主页时,Web服务器响应,
调用 ASP引擎来执行 ASP文件,并解释其中的脚本语言
(JScript 或 VBScript),通过 ODBC连接数据库,由数据库访问组件 ADO(ActiveX Data Objects)完成数据库操作,最后 ASP生成包含有数据查询结果的 HTML主页返回用户端显示 。
2,ODBC数据源
ODBC数据源使应用程序能用结构化的查询语言 SQL访问数据库,从而对访问数据库的应用程序屏蔽了不同数据库管理系统的访问差异,也使数据库系统的开发不仅仅局限于某个 DBMS。
通过 ODBC访问数据库的操作步骤,通常包括有以下的几个内容:
( 1) 创建数据源
( 2) 建立一个与数据源的对话连接
( 3) 向数据源发出 SQL请求
( 4) 定义一个缓冲区和数据格式存储访问结果
( 5) 提取结果
( 6) 处理各种错误
( 7) 向用户报告结果
( 8) 关闭与数据源的连接
SQL语言简介
( 1) 数据库表格
( 2) 创建表格
SQL语言中的 Create Table语句被用来建立新的数据库表格 。 Create Table语句的使用格式如下:
Create Table 表名 (字段 1 字段类型 字段长度,字段
2 字段类型 字段长度,字段 3 字段类型 字段长度 )
城市 最高气 温 最低气温北京 10 5
上海 15 8
天津 8 2
重庆 20 13
SQL语言简介( 2)
( 3) 向表格中插入数据
Sql语言使用 Insert语句向数据库表格中插入或添加新的数据行 。 Insert语句的使用格式如下:
Insert Into 表名 [(字段列表 )] Values (值列表 )
( 4) 更新记录
Sql语言使用 Update语句更新或修改满足规定条件的现有记录 。 Update语句的格式为:
Update 表名 Set 字段 1=值 1,字段 2 = 值
2……
[Where 条件表达式 ]
SQL语言简介( 3)
( 5) 删除记录
Sql语言使用 Delete语句删除数据库表格中的行或记录 。 Delete语句的格式为,Delete From 表名 [Where 条件表达式 ]
( 6) 删除数据库表格
在 Sql语言中使用 Drop Table命令删除某个表格以及该表格中的所有记录 。 Drop Table命令的使用格式为:
Drop Table 表名
( 7) 数据查询
Select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据 。 Select语句的语法格式如下:
Select *|字段列表
From 表名
[Where 条件表达式 ];
4,ADO的对象
ADO组件主要提供了以下七个对象和四个集合,通过在页面上调用这些对象执行相应的数据库操作 。
( 1) Connection对象:建立与后台数据库的连接 。
( 2) Command对象:执行 SQL指令,访问数据库 。
( 3) Parameters对象和 Parameters集合:为 Command对象提供数据和参数 。
( 4) RecordSet对象:存放访问数据库后的数据信息,是最为常用的对象 。
( 5) Field对象和 Field集合:提供对 Recordset中当前记录的各个字段进行访问的功能 。
( 6) Property对象和 Properties集合:提供有关信息,供
Connection,Command,RecordSet,Field对象使用 。
( 7) Error对象和 Errors集合:提供访问数据库时的错误信息 。
6.4.2 Connection连接对象
1,创建 Connection连接对象
首先,利用 ASP中的 Server对象的 CreateObject方法建立连接对象。
建立与数据库连接的语法如下:
Set 连接对象名 =Server.CreateObject("ADODB.Connection")
( 1) 没有 ODBC数据源的连接方式
这种方式是在没有建立数据源的情况下,在代码中指定 Dbq参数和
Driver参数来连接数据库 。
( 2) 有 ODBC数据源的连接方式
这种方式是通过在服务器上创建并配置数据源的形式建立连接,
ODBC是微软推出用于开发数据库系统应用程序的编程接口规范,
只要系统有相应的 ODBC驱动,就可以通过 ODBC与该数据库连接并访问数据库中的信息 。
2,Connection连接对象的属性
( 1) ConnectionTimeout
用于指定连接对象执行与数据库连接的最长时间,如果超过时间数据库没有连上,则停止执行,语法如下:
mycon.ConnectionTimeout=秒数
( 2) CommandTimeout
设置 Connection对象的 Execute方法的最长执行时间,
默认值为 30秒 。 执行数据库操作时,如果时间到了仍然无法正确执行,将结束操作,语法如下:
mycon.CommandTimeout=秒数
( 3) ConnectionString
用于指定连接对象的数据库连接信息 。
2,Connection连接对象的属性( 2)
( 4) Mode
用于设置连接数据库的权限
3,Connection连接对象的方法
( 1) Open
用于建立 Connection连接对象与数据库的连接 。 连接建立后,
使用连接对象的 Open方法打开数据库,才可以继续进行各种数据库操作 。 语法如下:
mycon.Open 连接参数
( 2) Close
用于关闭 Connection连接对象与数据库的连接 。 语法如下:
mycon.Close
Connection连接对象的方法
( 3) Execute
用于使用 SQL语句执行数据库的查询操作。当创建了连接对象并且与数据库连接后,就可以通过连接对象的 Execute方法直接与数据库对话,对数据库进行添加、更新和删除等操作 。
( 4) BeginTrans,用于表示开始事务处理,启动了页面与数据库的事务处理过程 。
( 5 ) CommitTrans,用 于 提 交 事 务 处 理 结 果,执行
CommitTrans才能真正更新数据库 。
( 6) RollbackTrans,用于取消事务处理结果,结束 事务处理过程 。
6.4.3 Recordset记录集对象
1,建立 Recordset对象
创建记录集的方法主要有两种 。 可以先建立连接对象,再创建记录集对象;也可以在非显式建立连接对象的情况下,创建记录集对象 。
第一种,先建立连接对象,再创建记录集对象 。
第二种,在非显式建立连接对象的情况下,用
Server对象的 CreatObject方法建立并打开记录集对象
2,Recordset记录集对象的属性
( 1) Source
用于设置数据库的查询信息,查询信息可以是命令对象名或 SQL语句
( 2) ActiveConnection
用于设置数据库的连接信息,连接信息可以是连接对象名或是包含数据库的连接信息的字符串
( 3) CursorType,用于设置记录集指针类型 。
( 4) LockType,用于设置记录集的锁定类型 。
( 5) MaxRecors,用于设定从服务器上得到的最大记录数 。
( 6) CursorLocation,用于设置数据处理是在客户端还是在服务器端 。
Recordset记录集对象的属性( 2)
( 7) Filter:,用于设置要显示的内容 。
( 8) Bof,用于判断当前记录指针是否在记录集的开头 。
( 9) EOF,用于判断当前记录指针是否在记录集的结尾 。。
( 10) RecordCount,用于返回记录集中的记录总数 。
( 11) PageCount:
用于设置分页显示时数据页的总数 。
( 12) PageSize
用于设置分页时每一页所显示的记录数 。
( 13) AbsolutePage
用于设置当前指针位于哪一页 。
( 14) AbsolutePosition
用于设置当前指针所在的记录行 。
3,Recordset记录集对象的方法
( 1) Open,用于打开记录集
( 2) Close,用于关闭记录集
( 3) Requery,用于重新打开记录集
( 4) Move,用于将指针移动到指定记录
( 5) MoveFirst,用于将指针移动到第一条记录
( 6) MoveLast,用于将指针移动到最后一条记录
( 7) MovePrevious,用于将指针移动到上一条记录
( 8) MoveNext,用于将指针移动到下一条记录,
( 9) AddNew,用于向数据库添加记录
( 10) Delete,用于向数据库删除当前记录
( 11) Update用于向数据库更新记录