主讲,包 锋第 九 章 服务器端开发技术
ASP文件结构
ASP对象简介
Response对象
Request对象
Session对象
Application对象
Server对象基本概念
ASP本身并不是一种脚本语言,它只是 提供了一种使镶嵌在 HTML页面中的脚本程序得以运行的环境 。
ASP程序其实是以扩展名为,asp的纯文本形式存在于
WEB服务器上的。
ASP程序中可以包含纯文本,HTML标记以及脚本命令 。
一,APS文件的基本结构基本结构
<HTML>
<HEAD></HEAD>
<BODY>
<TABLE>
<%Call Callme%>
</TABLE>
<%Call ViewDate%>
</BODY>
</HTML>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Callme
Response.Write"<TR><TD>Call</TD>
<TD>Me</TD></TR>“
End Sub
</SCRIPT>
<SCRIPT LANGUAGE=Jscript RUNAT=Server>
function ViewDate()
{var x
x=newDate()
Response.Write(x.toString())}
</SCRIPT>
“<% %>”:符号是标准的 ASP定界符。
,<SCRIPT></SCRIPT>”:之间的就是脚本语言。
ASP不同于脚本语言,它有自己特定的语法,所有的
ASP命令 都必须包含在 <%和 %>之内。
例 1,<%test=“English”%>,ASP通过包含在 <%和 %>中的表达式将执行结果输出到客户浏览器。
例 2,<%=test%>就是将前面赋给变量 test的值 English发送到客户浏览器中。
例 3,当变量 test的值为,数学,时,以下语句:
这周末我们将测验 <%=test%>.
在客户浏览器中则显示为:
这周末我们将测验数学例 1:用 ASP制作网页,要求在不同的时间段,显示不同的内容。
<Html><Head></Head>
<Body>
<FontColor=“Green”>
<%If Time<#12:00:00# And Time>=#00:00:00# Then%>
早上好,今天天气不赖啊 !
<%Else If Time<#19:00:00# And Time>=#12:00:00# Then%>
下午好 !
<%Else%>
今晚你有没有去 IRC聊天 !
<%End If%>
</Body>
</Html>
Bgcolor=“<%bgc%>”
<%
If Time<#12:00:00# And Time>=#00:00:00# Then
bgc=“silver”
ElseIf Time<#19:00:00# And Time>=#12:00:00# Then
bgc=“navy”
Else bgc="red“
End If
%>
例 2:对例 2进行完善,要求在凌晨至中午 12点的时间段内,了解浏览网页的客户姓名,并向他问候。
<Html><Head></Head>
<Body>
<FontColor=“Green”>
<%If Time<#12:00:00# And Time>=#00:00:00# Then%>
早上好,今天天气不赖啊 !
<%Else If Time<#19:00:00# And Time>=#12:00:00# Then%>
下午好 !
<%Else%>
今晚你有没有去 IRC聊天 !
<%End If%>
</Body>
</Html>
<FORM METHOD=“POST” ACTION=“asp003.asp”>
<P>姓名,<INPUT NAME=“fname” SIZE=“48”>
<P>别名,<INPUT NAME=“lname” SIZE=“48”>
<P>尊称,<INPUT NAME=“title” TYPE=RADIO VALUE=“mr”> 先生,
<INPUT NAME=“title” TYPE=RADIO VALUE=“ms”>女士,
<P> <INPUT NAME=“T1” TYPE=SUBMIT VALUE=“确定” >
<INPUT NAME=“T2 TYPE=RESET VALUE=“重置” >
</FORM>
<%title=request.form(“title”)%>
%If title=“mr” then%>
欢迎您 <%=request.form(“fname”) %> 先生。
<%elseif title=“ms” then %>
欢迎您 <%=request.form(“fname”)%> 女士 。
<%else%>
<B><font color=blue> 欢迎您
<%=request.form("fname")&""&request.form("lname")%> 。
</font></B>
<%end if%>
二,ASP的对象简介
Response对象,用来将信息发送回给浏览器
Request对象,可以被用来访问所有从浏览器到服务器间的信息
Session对象,被用来存储一些普通用户其滞留期间的信息
Application对象,被用来存储一个应用中所有用户共享的信息。
Server对象,提供你运用许多 server端的应用函数。
Response.Write方法
Respons.Redirect方法
Reponse.End方法三,Response对象方法或属性 说明
Write方法 输出数据到浏览器
Redirect方法 改变浏览的网页
End方法 结束数据的输出
Buffer属性 是否设置缓冲区
Clear方法 清除缓冲区的数据
Flush方法 输出缓冲区的数据
Response对象,对 ASP程序来说,就是把数据下载给浏览器,它包括如下的方法和属性。
将 HTML标记嵌入 ASP程序中
<%
Name =,小曾 "
Sex =,男 "
Blood = "AB"
Tel =,01062205937"
Address =,某个地方的野人 "
DisplayTableData
%>
怎么显示我的个人资料呢?
<%
Sub DisplayTableData()
Response.Write "<TABLE Border=1>"
Response.Write "<TR><TD>姓名," & Name &
"</TD></TR>"
Response.Write "<TR><TD>性别," & Sex & "</TD></TR>"
Response.Write "<TR><TD>血型," & Blood &
"</TD></TR>"
Response.Write "<TR><TD>电话," & Tel & "</TD></TR>"
Response.Write "<TR><TD>地址," & Address &
"</TD></TR>" Response.Write "</TABLE>"
End Sub
%>
<%Sub DisplayTableData()%>
<TABLE Border=1>
<TR><TD>姓名,<%=Name%></TD></TR>
<TR><TD>性别,<%=Sex%></TD></TR>
<TR><TD>血型,<%=Blood%></TD></TR>
<TR><TD>电话,<%=Tel%></TD></TR>
<TR><TD>地址,<%=Address%></TD></TR>
</TABLE>
<%End Sub%>
Response.Redirect
<%
week = Weekday(Now,2)
WhichPage =,W” & week &,.htm”
Response.Redirect WhichPage
%>
有一个站点包含七个网页,网页的名称按星期数命名分别为,W1.HTM,W2.HTM,…….,W7.HTM,
编写一 ASP程序读取星期参数,然后跳到星期数所对应的网页。
Response.End
Response.End,主要作用是告诉浏览器数据已经全部下载完毕,不过它也会促使 IIS/PWS不再解读 (译 )后续的 HTML标记及 ASP程序,从而达到结束,asp文档执行的目的。
建立一个有时间限制的站点,该站点的开放时间为每日的上午 7时至下午 8时。
<%
If Time<#20:00:00# And Time>=#07:00:00# Then
Response.Write,对不起,现在网站没有开放 "
Response.End
End If
%>
<HTML>
<HEAD><TITLE>Welcome!</TITLE></HEAD>
<BODY BgColor="#FFFFFF">
<Center><H2>
欢迎您,光临本站 !
<HR></H2></Center>
</BODY>
</HTML>
四,Request对象读取表单的字段
Request对象的 方法
HTML的 FORM是最主要的网页间传递信息的手段,是用户和 ASP程序实现交互和信息传递的最可靠手段,
因为它适用于任何浏览器。
利用表单读取数据的方法是使用
Request对象。
Request对象一个典型的 HTML输入表单
<form action=“Echo.asp” method="GET">
<p>姓名,<input type="text" size="20"
name="Name"></p>
<p>兴趣,<input type="text" size="20"
name="Love"></p>
<p><input type="submit" value="提交 "> </p>
</form>
利用 Request读取数据
<%
data1 = Request("Name")
data2 = Request("Love")
Response.Write data1
Response.Write " 欢迎您,您喜欢的电脑学科是 "
Response.Write data2
%>
下拉式菜单
<form action="echo3b.asp" method="POST">
<p><select name="City" size=“4” multiple>
<option>北京市 </option>
<option>上海市 </option>
<option>广州市 </option>
<option>重庆市 </option>
</select></p>
<p><input type="submit" value=" 提交 "></p>
</form>
如何得到数据
<%
City = Request("City")
Cities = Split( City,"," )
For i = 0 to UBound(Cities)
Response.Write "<LI>" & Cities(i)
Next
%>
<form method="POST" action="index.asp">
<p>VB50<input type="checkbox" name=“DB"value=“VB50">
VC++<input type="checkbox" name=“DB" value=“VC++">
ASP <input type="checkbox" name=“DB" value=“ASP">
<input type="submit,value="提交 " name="B1">
<input type="reset" value="全部重写 " name="B2"></p>
</form>
<%
Book = Request(“DB")
Books = Split( Book,"," )
For i = 0 to UBound(Books)
Response.Write "<LI>" & Books(i)
Next
%>
复选框与单选按钮五,Application对象
Application主要功能是为 Web应用程序提供全局变量。
没有内置属性,但有自定义属性 (可以是任意数据类型:字符串、数值、对象等 )。
方法,Lock,UnLock。
事件,OnEnd,OnStart。
Application记录变量
<%
data1 = Application("data1")
Response.Write "进入网页时,data1=" & data1 & "<BR>"
data1 = data1 + 100
Response.Write "网页结束时,data1=" & data1 & "<BR>"
Application("data1") = data1
%>
访问计数器实例
<%
Application("counter") = Application("counter") + 1
%>
<HTML>
<BODY BGCOLOR=WHITE>
<CENTER><H2>访问计数器范例 - countv1.asp<HR></H2>
您是本站第 <%=Application(“counter”)%>位嘉宾!
</BODY>
</HTML>
<%
Application.Lock
Application("counter") = Application("counter") + 1
Application.UnLock
%>
不让两位联机者同时执行
对 Application对象也是有生命周期的,对于多用户共享,不会因为某一个甚至全部用户离开就消失
占用内存,你要斟酌使用以免降低服务器对其他工作的响应速度。
Application终止:服务被终止,或者该
Application被卸载。
Application生命周期六,Session对象
Session对象主要功能是为 Web应用程序提供私有变量。
属性,CodePage(代码页 ),LCID(现场标识 )、
TimeOut(超时时限 );自定义属性 (可以是任意数据类型:字符串、数值、对象等 )。
方法,Abandon 删除存储在 Session对象中的对象并释放这些对象的资源。
事件,OnEnd,OnStart。
例如:
<%data1 = Session("data1")
Response.Write "进入网页时,data1=" & data1 & "<BR>"
data1 = data1 + 100
Response.Write "网页结束时,data1=" & data1 & "<BR>"
Session("data1") = data1
%>
Session 与 Application
浏览器 Session对象
Session
对象
Session
对象浏览器浏览器 浏览器浏览器浏览器
Application
对象
ASP ASP
应用一:必须输入帐号及密码的网站
应用二:强迫上网者先进入首页
应用三:防止上网者连续按下,刷新,

Session的实际应用如果一个人一直没有提出请求或者刷新主页长达 5分钟,那么服务器就默认为用户已经离开了。
下面这个脚本将限制时间设为 60分钟:
<% Session.Timeout=60 %>
Session生命周期
Server对象提供了服务器端最基本的属性及方法属性,ScriptTimeOut=n设置 Script必须在指定的时间内执行,逾时将不执行。以秒为单位,默认为 90秒。例如
<%Server.ScriptTimeOut=120%>
方法,CreatObject(component)
Server.MapPath()方法。
七,Server对象存取服务器端的文件
FileSystemObject 对象方法:
OpenTextFile(Name,Mode,Create,Format)
Name:文件名 Mode:打开方式 1-只读 2-可写
Create:文件不存在是否建立 True-建立 False-不建立
Formate:文件建立的格式 0-表示 ASCII -2 表示系统默认值。
Close:关闭文件
ReadLine:从文件的指针位置读取一行
WriteLine Sting,将字符串写入文件。
八,ADO技术
ADO技术概述
Connection对象
Recordset对象
Recordset对象的应用
Command对象
1,ADO技术概述
ADO包含了下列的对象:连接对象,命令对象,域对象,参数对象,记录集对象,错误对象。这些对象的作用为:
连接对象 (Connection):用于建立与数据源的连接,以及处理一些命令和事务。
记录集对象 (RecordSet),用于处理数据库的表中的数据,如:获取和修改数据。
命令对象 (Command),用于处理传递给数据源的命令。
域对象 (Field):用于表示记录集中的列信息,包括列值以及其他信息。
参数对象 (Parameter):用于对传送给数据源的命令赋参数值。
错误对象 (Error):用于获得所发生的错误的详细信息。
Connection对象:用于打开数据库连接。建立该对象的方法如下:
Dim objConn
Set objConn=Server.CreateObject(“ADODB.Connection”)
Connection对象方法
BeginTrans,开始一个事务
CommiTrans:提交一个事务。
RollBackTrans:取消一个事务。
Close:关闭一个数据库连接。
Open:打开一个数据库连接。
Execute:对表进行 SQL查询
2,Connection对象
Connection对象的属性集合
Version:返回 ADO函数库的版本。
CommandTimeOut:设置执行方法的逾期时间,以秒为单位,默认值为 30秒,可以根据实际情况加以调整。例如:
objConn.CommandTimeOut=60
ConnectionString:描述数据库的连接方式(参见教材
P177)。
ConnectionTimeOut:设置连接数据库的逾期时间。以秒为单位,默认值为 15秒。
Fields集合:所有 Field(字段 )对象的集合。
Error集合:所有错误对象的集合。
Connection 打开数据库连接实例以 ODBC的数据源打开
<%
Dim objConn
Set objConn=Server.CreateObject(“ADODB.Connection)
objConn.Open,DSN=Address; UID=; PWD=”
%>
以 OLE DB方式打开
<%
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString=_
"Provider=MSDASQL;Driver={SQL Server};"&_
"Server=SERVNET\SQL2000;Database=Friend;"&_
"Uid=sa;Pwd=1234;"
objConn.Open
%>
Connection 执行 SQL语言的方法 —Execute
Execute方法利用该方法可以使用 SQL语言,完成数据库的插入、删除、更新及查询等操作。但利用该方法只能得到一个基本的游标,即只能读且只能向前的游标。
Execute的语法格式
<%
Set rs_Conn = objConn.Execute(SQL语句的字符串 )
%>
rs_Conn游标的常用方法及属性
rs_Conn.Eof属性,判断游标是否指向缓冲区尾部。
rs_Conn.MoveNext方法:将游标下移一条记录。
rs_Conn,Fields(字段名 ):读取字段的值。
Connection 关闭数据库连接当打开数据连接并完成存取操作后,要关闭数据库连接释放 Connection对象所占用的空间。
<%
rs_Conn.Colse
Set rs_Conn=Nothing
objConn.Close
Set objConn=Nothing
%>
实例使用 Connection对象打开 Student数据库,并将在,学生基础信息”表中检索所有学生的“学号、姓名、性别、
出生日期、民族”等五个字段,并将结果以表格的形式显示。
Recordset对象,对数据库中表的每个记录进行存取 。
Recordset对象常用方法,
Open:打开新的 RecordSet对象。
AddNew,在 RecordSet对象中插入新记录 。
UpDate:完成 RecordSet对象中的某条记录的更新。
Delete:删除 RecordSet对象中当前游标所在的记录。
MoveNext:移到 RecordSet对象中当前游标所在的记录的下一条记录。
MovePrevious:移到 RecordSet对象中当前游标所在的记录的上一条记录。
MoveFirst:移到 RecordSet对象中第一条记录。
MoveLast:移到 RecordSet对象中最后一条记录。
3,Recordset
Recordset对象常用属性
BOF,若游标位于第一条记录之前,返回 Ture,否则返回
False。
EOF:若游标位于最后一条记录之后,返回 Ture,否则返回 False。
Filter:设置 RecordSet数据集的过滤条件。
RecordCount:返回 RecordSet对象内的记录数。
PageSize:指定逻辑页中的记录个数,默认值是 10。
PageCount:返回记录集中的逻辑页数。
Source:指定 Recordset对象的数据源。
ActiveConnection:设置 Recordset所属的 Connection对象。
CursorType:设置记录集的游标类型,有如下 4种值:
0:系统默认值。表示记录游标只能向下移动一条记录。
1:表示记录游标可以自由的上下移动,只能看到更新记录,看不到新增和删除记录。
2:动态游标。游标可以自由的上下移动,能看任何变化。
3:静态游标。只是数据的副本,不能看到任何变化
LockType,设置记录集的锁定类型,有如下 4种值:
1,为默认值,表示所有记录均为只读,不允许任何更改。
2:表示当开始编辑记录字段时,便锁定此记录,待编辑完后,并调用 UpDate方法进行更新后,在解锁。
3:只有调用 UpDate方法进行更新时才锁定记录。
4:允许以批次的方式更新记录。
Recordset对象的建立:
DIM rsObj
Set rsObj=Server.CreateObject(“ADODB.RecordSet”)
Recordset对象 Open方法的语法:
objRS.Open [Source],[ Connection],[ CurSorType],
[Locktype],[ Option ]
Source:表名或 SQL语句
Connection:对象变量名
CurSorType:设置游标在 RecordSet对象中的移动方向。
LockType:设置数据写入表时的加锁方式。
Option,=2表示 Source参数为表名; =1表 Source为 SQL
语句 ; =3表示存储过程。
Recordset对象实例一:读取表的记录使用 Connection对象打开 Student数据库,要求 以表格的形式显示“学号、姓名、课程名、考核方式、成绩”。
程序结构:
<%
1、使用 Connection对象打开数据库 Student
连接对象变量为 objConn
2、利用视图建立满足条件记录的 Recordset对象。
记录集对象变量为 rsStud
3、将当前记录以表格的形式显示在浏览器中
4、关闭数据库的连接并释放对象变量
%>
Recordset对象实例二:增加表的记录在数据库“学生基础数据”表中增加一条记录。
(学号,姓名,性别,出生日期,政治面貌,民族 )
(?110099?,?魏小莲 ’,?女 ’,?1980-05-06?,?党员 ’,
‘ 汉 ’ )
然后以表格的形式显示,学生基础数据,表中的数据。
程序结构:
<%
1、使用 Connection对象打开数据库 Student
连接对象变量为 objBook
2、建立的 Recordset对象,记录集对象变量为 rsBook
3,使用 AddNew方法在表中增加一条记录
4、以表格的形式显示表中的数据
4、关闭数据库的连接并释放对象变量
%>
系统的组成数据库部分:存放系统认可的合法用户信息
Student 中的 Customer
ASP脚本文件,在网站的根目录下包含以下文件
Login.htm:用户登录界面
Regist.Htm:用户注册界面
Check.asp:检查用户的登录信息
Regch.Asp:检查用户的注册信息四,Recordset的应用
——用户注册管理假设数据库文件,Price.Mdf”中有一个名叫“零件报价表”的表,表中包含如下属性:
(零件种类,厂家,规格,价格,报价日期 )
请编写一个 Web应用程序,读取表中的全部记录并以表格的形式显示。
请分别显示该表中的第一条记录、第十条记录、
最后一条记录。
假设不知道,零件报价表,表中的属性名及属性的个数,请编写一个 Web应用程序,读取表中的全部记录并以表格的形式显示。
如何读取表中数据程序结构:
使用 Include调用 AdoFunctions.asp文件
<!-- #Include File=“AdoFunctions.asp”-->
<%
读取数据库中的表“零件报价表”的记录,并放入
Recordset对象。
将当前记录显示在浏览器画面关闭数据库的连接并释放
%>
<!-- #include file="ADOFunctions.asp" -->
<%
'调用 GetRecordset函数库连接并读取数据表的记录
Dim objRS
Set objRS = GetRecordset("Price","零件报价表 ",0,3,2)
%>
<%
Dim conObj
Function GetRecordset(FileName,TableName,adCur,adLock)
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString =_
Provider=MSDASQL;Driver={SQL Server};"&_
"Server=SERVNET\SQL2000;Database=Friend;"&_
"Uid=sa;Pwd=1234;"
conObj.Open
Set GetRecordset =_
Server.CreateObject("ADODB.Recordset")
GetRecordset.Open TableName,objConn,adCur,adLock,2
End Function
%>
<% Dim objRS
Set objRS = GetRecordset(“Price”,“零件报价表”,0,3,2) %>
<TABLE BORDER="1">
<TR>
<TH>零件种类 </TH>
<TH>厂家 </TH>
<TH>规格 </TH>
<TH>价格 </TH>
<TH>报价日期 </TH>
</TR>
<%
Do While Not objRS.EOF
Response.Write "<TR><TD>" & objRS("零件种类 ") & "</TD>"
Response.Write "<TD>" & objRS("厂家 ") & "</TD>"
Response.Write "<TD>" & objRS("规格 ") & "</TD>"
Response.Write "<TD>" & objRS("价格 ") & "</TD>"
Response.Write "<TD>" & objRS("报价日期 ") & "</TD></TR>"
objRS.MoveNext
Loop
%>
<%
关闭数据库连接并释放对象
objRS.Close
Set objRS = Nothing
conObj.Close
Set conObj = Nothing
%>
<%
'显示第一条记录
objRS.MoveFirst
Response.Write,第一条的零件种类," & objRS("零件种类 ") & "<BR>"
Response.Write,第一条的厂家," & objRS("厂家 ") & "<BR>"
'显示第十条记录
objRS.Move 9
Response.Write,第十条的零件种类," & objRS("零件种类 ") & "<BR>"
Response.Write,第十条的厂家," & objRS("厂家 ") & "<BR>"
'显示最后一条记录
objRS.MoveLast
Response.Write "最后一条的零件种类," & objRS("零件种类 ") & "<BR>"
Response.Write "最后一条的厂家," & objRS("厂家 ") & "<BR>“
%>
<!-- #include file="ADOFunctions.asp" -->
<%
Dim objRS
Set objRS = GetRecordset("Price","零件报价表 ",0,3,3)
%>
<TABLE BORDER="1">
<TR>
<%
'读取数据表的字段名称以作为表格的标题
For I = 0 To objRS.Fields.Count - 1
Response.Write "<TH>" & objRS.Fields(I).Name & "</TH>"
Next
%>
</TR>
</TABLE>
假设数据库,Grades.mdf”中有一个“成绩单”表,
该表中包含如下属性:
(“学号,,“姓名,,“语文,,“数学,,“自然,)
请编写 请编写一个 Web应用程序,将表中的数据按
“语文”及“数学”成绩降序排列,并 读取表中的全部记录并以表格的形式显示。
RecordSet.Sort属性:
RecordSet.Sort=“语文”
RecordSet.Sort=“语文 DESC”
RecordSet.Sort=“语文 DESC,数学 DESC”
需要将 RecordSet.CursorLocation设置为 3,
RecordSet.CursorType设置为 3。
如何排序表中的数据假设数据库,Grades.mdb”中有一个“成绩单”表,
该表中包含如下属性:
(“学号,,“姓名,,“语文,,“数学,,“自然,)
请编写 请编写一个 Web应用程序,完成下列功能:
选择所有 语文 >90 OR 数学 >90 的记录 。
选择所有 语文 <>100 AND 数学 <90 的记录
RecordSet.Filter属性:
RecordSet.Filter=“语文 >90 OR 数学 >90,
RecordSet.Filter=“语文 <>100 AND 数学 <90,
如何在表中选择满足条件的记录上机作业
1.练习直接地用 Response.write,与 HTML标记混合使用 Response.write,或者使用简化版,<%=数据
%>三种方式。
2.编写一 ASP程序读取星期参数,然后跳到星期所对应的网页,比如课表。
3.使用 Response.End 方法写一有使用期限的网页,
比如固定开放的时间和日期等。
4.制作一个登录表单要求用户输入姓名与口令,单击确定按钮后将信息传递到 Password.asp程序中,
在 Password.asp中判断输入的密码是否正确。如果不正确,在网页中显示“密码错误!请重新输入。”,否则显示“欢迎 XXX光临本站!”
上机作业
1,使用 Application对象练习编写一个计数器。
2,使用 Session 对象来强迫上网者进入首页。
3,练习 Server对象打开、读取与写入文件。