请求对象-Request
对象是一种复杂的数据类型,是由属性和方法构成的具有特定功能的集合,脚本语言一般都是基于对象的语言,都提供了功能强大的对象,其中有两个最为重要的对象就是Request请求对象和Response响应对象,请求对象Request用来与客户端交互,收集客户端信息或服务器端的环境变量,然后将收集的这些信息发送给服务器端或其它asp页面,称为发送请求,服务器收到请求后就会做出适当的响应,即:对这些信息进行处理,然后将结果返回给客户端浏览器,利用Request对象可以很容易的获取客户端的一些信息,Request对象获取信息的方法主要有下面几种;
form 方法,主要用来获取表单中的信息; querystring方法,主要获取附加在url后面的信息; servervariabes方法,主要获取客户的IP地址等环境变量; cookices方法,主要用来获取客户浏览器或硬盘上的cookices信息; clientcertificate方法,取得客户端浏览器的身份验证信息 BinaryRead方法,以二进制码方式读取客户端post数据
环境变量的概念: 环境指的是周围,环境变量指的是用来保存周围信息的变量; 服务器环境变量:指的是在服务器上用来保存服务器环境信息的变量,这些变量主要有 1 ALL_HTTP 保存的信息为:所有客户端发送的http报头 2 HTTP_REFERER 保存的信息为:客户使用的超连接的Internet地址 3 HTTP_USER_AGENT 保存的信息为:客户端使用的浏览器类型 4 URL 保存的信息为:url的基本段 5 QUERY_STRING 保存的信息为:url问号后面的内容 ......
一 form方法 在html页面中使用表单标记form构造一个窗体,然后使用写入标记input在其上插入一系列的控件,这样就形成了一个完整的表单,在这个表单上用户填写一些信息,填写完毕后,用户通过点击提交按钮submit将信息上传到服务器或者其它的asp页面,表单向外发送数据的方式由method进行指定,当信息量较大时使用post,当信息量较少时使用get; 表单信息通过post方式发送时,服务器端或另一个asp页面就使用form方法接收; 表单信息通过get方式发送时,服务器端或另一个asp页面就使用querystring方法接收,
form方法应用格式:
Request.form("name")
上式中:
(1)Request是Asp的一个对象 (2)form则是Request对象所包含的对象集合,是Request对象获取信息的一种方法,在html页中也有一个form,但它是html页中的一个标记,它用来产生一个表单,我们可以这样说:Asp用form方法来获取html中form表单的信息; (3)name是html中form表单的某个文本框、密码框,按钮,单选框,复选框,下拉框或者隐藏域等的名称;同时这个名称还必须是用post传递过来的;
示例1
(1)p1.htm
<html> <head> <title>asp简单程序</title> </head> <body> <h2>请输入你的建议,然后点确定</h2> <form action="pp.asp" method=post target="blank"> <input type="text" name="mytext" size="100"><p> <input type="submit" name="mytype" value="提交"> </form> </body> </html>
示例解读; 使用form标记构造一个窗体,用input在表单中插入两个控件,其中文本控件的名称为mytext,这个名称与客户在该文本中输入的信息会在提交按钮点击后向pp.asp文件发送,发送的方式method必须是post,pp.asp文件是由form的属性action指定的;
(2)pp.asp
<html> <head> <title>asp简单程序</title> </head> <body> <h2>收到用户一条建议是:</h2> <% dim ss ss=Request.form("mytext") response.write(ss) ' %><p> <% response.write(now)%> </body> </html>
解读: Request对象的form方法,收到p1.htm中表单内容为mytext的文本控件信息后,将信息保存到变量ss中,ss通过输出语句显示给用户;
示例2 p2.asp
<html> <head> <title>asp简单程序</title> </head> <body>
<form action="" method=post target="blank"> <input type="text" name="mytext1"> + <input type="text" name="mytext2"> <p> <input type="submit" value="确定"> </form> <% if Request.form("mytext1")<>""and Request.form("mytext2")<>""then dim ss ss=cint(Request.form("mytext1"))+cint(Request.form("mytext2")) response.write("两数之和="&ss) else response.write("写入数字后按确定") end if %>
</body> </html>
示例解读: 使用表单标记form定义了一个表单,接收这个表单数据文件的地址使用属性action进行指定,但是本例中 action="" 指定的是一个空值,表明你要使用当前文档的url,即:本文档中的脚本接收这些信息; 脚本if后面是两个条件,两个条件使用"逻辑与"运算符and连接,其含义是当条件1和条件2都为真时,if的条件才为真, 条件1 Request.form("mytext1")<>"" 使用Request对象获取表单form中的单行文本控件mytext1的内容,符号<>""表示文本不等于空值,对于本例这样比较长的表达式,通常把它保存到一个变量中,这样会使程序更易于阅读;如下所示: <% dim a,b,ss a=Request.form("mytext1") b=Request.form("mytext2") if a<>"" and b<>"" then ss=cint(a)+cint(b) response.write("两数之和="&ss) else response.write("写入数字后按确定") end if %>
如果你不怕麻烦可以将上面复制,替换源文件中的脚本界定符之间的内容; 脚本中因为使用Request获取的是文本变量的内容,所以其数据是一个字符串类型的,对他们进行数值类型的加法,就得将其转换为数值类型的数据,cint就是这样的一个转换函数;
示例3 (1)p3.htm
<html> <head> <title>asp简单程序</title> </head> <body bgcolor="#CCCCFF"> <p align=center><font color="#990000" size="6" face="华文行楷" >欢迎光临闪客启航</font> </p> <p> “闪客启航”是一所成功的网络学校,成立两年来,在大成校长的领导下,由开始几个老师在一起的学术交流,到现在规范教学,从无到有不断发展壮大,为广大闪客一族提供了一个健康纯净的学习交流的平台;为了更好的为你服务,请你填写下面的调查表; <p></p>
<form action="ppp.asp" method=post name="my_form" target="blank"><br>
请选择你喜欢的课程<br> flash脚本课 <input type="checkbox" name=checkox1 value="flash脚本课"><br> flash基础课 <input type="checkbox" name=checkox2 value="flash基础课"><br> flash实例课 <input type="checkbox" name=checkox3 value="flash实例课"><br> flash提高课 <input type="checkbox" name=checkox4 value="flash提高课"><br> <!-- 注意:多选框的名称name各自不同,这时用Request.form方法获取他们的结果是连续排列的,表示他们不是同一组数据,如果name取相同名称,其结果表示为一整组,在Request.form获取后显示的结果中会自动加上 逗号,如下面的 爱好 栏; 另外,对于多选框,单选框,下拉框中的value属性的值,是Request.form方法获取的对象; -->
<p></p> 请选择你<font color="#ff0000" size="5">最</font>喜欢的课程<br> flash脚本课 <input type="radio" name=radio value="flash脚本课"><br> flash基础课 <input type="radio" name=radio value="flash基础课"><br> flash实例课 <input type="radio" name=radio value="flash实例课"><br> flash提高课 <input type="radio" name=radio value="flash提高课"><p></p>
<select name="my_work" > <option value="1"> 课程表
<option value="2">星期1:flash实例课,上课时间20:00,授课老师xxx <option value="3">星期2:flash基础课,上课时间20:00,授课老师xxx <option value="4">星期3:flash提高课,上课时间20:00,授课老师xxx <option value="5">星期4:flash脚本课,上课时间20:00,授课老师xxx <option value="6">星期5:flash研讨课,上课时间20:00,授课老师xxx </select>
<h2 >请填写个人信息</h2>
姓名:<input type="text" name="my_name"><br>
性别: <input type="Radio" name="my_Radi" value="女">女性 <input type="Radio" name="my_Radi" value="男" checked>男<br> 爱好:<input type="checkbox" name="my_love" value="运动">运动 <input type="checkbox" name="my_love" value="唱歌">唱歌 <input type="checkbox" name="my_love" value="吃零食">吃零食 <input type="checkbox" name="my_love" value="玩游戏">玩游戏 <input type="checkbox" name="my_love" value="看电影">看电影
<!-- 注意,上面的复选框名称是相同的 -->
<p></p> 请在下面填写你的建议<br> <textarea name="introduce" cols="42" > </textarea><br>
<p></p> 帐号:<input name="accounts" ><br> 密码:<input type="password" name="password"><br> <input type="submit" value="确定"> <input type="reset" value="清除">
</form> </body> </html>
(2)ppp.asp
<html> <head><title>asp简单程序</title></head> <body> <h2 align=center>下面是你填写的信息</h2> <%
dim my_name,my_Radi,my_love,introduce,accounts,password,checkox1,checkox2,checkox3,checkox4,radio
checkox1=request.form("checkox1") checkox2=request.form("checkox2") checkox3=request.form("checkox3") checkox4=request.form("checkox4") radio=request.form("radio") my_name=request.form("my_name") my_Radi=request.form("my_Radi") my_love=request.form("my_love") introduce=request.form("introduce") accounts=request.form("accounts") password=request.form("password") %> <%response.write("你喜欢的课程:"&checkox1&checkox2&checkox3&checkox4)%><p></p> <%response.write("你最喜欢的是:"&radio)%> <p></p>
<%response.write("姓名:"&my_name)%><br> <%response.write("性别:"&my_Radi)%><br> <%response.write("爱好:"&my_love)%><br> <%response.write("建议:"&introduce)%><p> <%response.write("帐号:"&accounts)%><br> <%response.write("密码:"&password)%> </body> </html>
................................................
二 QueryString方法
表单信息通过get方式发送时,另一个asp页面就可以使用querystring方法接收,querystring方法主要用来接收数据量较小的,标识在url后面的一些变量及其值,这些变量主要应用于网页之间的信息交流;
QueryString方法的格式为:
Request.querystring("name")
示例4 (1)p4.htm <html> <head><title>asp简单程序</title></head> <body> <h2 align=center>填写你的信息</h2> <form action="pppp.asp" method="get" target="blank"> 姓名:<input tpye="text" name="y_name"><br> 年龄:<input type="text" name="y_age" ><br> <input type="submit" value="提交"> </form> </body> </html>
示例解读: 在姓名栏用汉语拼音填写 xiao li,年龄栏填写22,提交后就会在新的窗口中显示你填写的信息,这时我们观看地址栏,会看到变量通过?号附加在了url的后面,如下: http://longka.flasher123.com/wwwroot/ch7/pppp.asp?y_name=xiao li&y_age=22
(2)pppp.asp
<html> <head> <title>asp简单程序</title> </head> <body> <% dim y_name,y_age y_name=request.querystring("y_name") y_age =request.querystring("y_age") %>
<% response.write("你的名字:"&y_name)%><br> <% response.write("你的年龄:"&y_age)%> </body> </html>
................................................
三 ServerVariables方法
ServerVariables方法用来获取服务器端或者客户端的一些信息,比如:服务器端的环境变量;
格式: Request.ServerVariables("环境变量名")
下面是一些常用的环境变量,如要查看更多的请参阅其它资料
1 ALL_HTTP 保存的信息为:所有客户端发送的http报头 2 AUTH_TYPE 当访问被保护的脚本时,判断该用户是否合法 3 CONTENT_TYPE 内容的数据类型 4 GATEWAY_INTERFACE,服务器使用的CGI规格的修订版 5 HTTP_REFERER 保存的信息为:客户使用的超连接的Internet地址 6 HTTP_USER_AGENT 保存的信息为:客户端使用的浏览器类型 7 LOGN_USER,登陆widows NT的用户账号 8 QUERY_STRING 保存的信息为:url问号后面的内容 9 REMOTE_ADDR 客户端IP地址 10 REMOTE_HOST 客户端主机名 11 SERVER_NAME 服务器端的IP地址或名称 12 SCRIPT_NAME 当前asp文件的虚拟路径 13 URL 保存的信息为:url的基本段
示例5 p5.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim IP IP=Request.ServerVariables("REMOTE_ADDR") response.write("你的真实IP地址是:"&IP) %> </body> </html>
示例6 p6.asp
<html> <head><title>asp简单程序</title></head> <body> <% dim yurl yurl=Request.ServerVariables("url") response.write("相对url是:"&yurl) %> </body> </html>
响应对象-Response
Response对象用于向客户端浏览器发送信息,和我们上一节学过的Request对象一起实现数据的收发, Response对象有一些方法和属性,如下所示:
一些方法 1 Response.write 为客户端输出信息 2 Response.end 中止asp程序并返回当时的状态 3 Response.redirect 引导客户浏览器到另一个页面 4 Response.Clear 清除缓冲区的html 5 BinaryWrite 输出二进制信息 6 Flush 返回缓冲区的数据
两个属性 1 Response.Buffer 设置缓冲,可选true,false 2 ContenType 控制文件的输出类型
一 Response.write(information)
information为要发送给客户的信息,可以是变量或字符串;
示例1
<html> <head> <title>asp简单程序</title> </head> <body> <center> <h2>欢迎光临</h2> Asp测试 </center><br> 你的来访时间是:<% response.write(now) %><br> <% response.write "你的来访时间是:"&"<br>"&now %> <p></p> <font size="5" color="#FF0000"> <% response.write "你的来访时间是:"&now %> </font> </body> </html>
注意点:
1 输出格式是带有圆括号,换行符放在输出语句外面
<% response.write(now) %><br>
2 输出格式去掉圆括号,换行符放在输出语句里面 <% response.write "你的来访时间是:"&"<br>"&now %>
3 使用html代码改变输出语句字体 <font size="5" color="#FF0000"> <% response.write "你的来访时间是:"&now %> </font>
二,Response.end
中止asp程序并返回当时的状况;
示例2
本例说明Response.end不仅中止了Vbscript还中止了html的执行
<html> <head> <title>asp简单程序</title> </head> <body> <center> <h2>欢迎光临</h2> Asp测试 </center><br> 你的来访时间是:<% response.write(now) %><br> 另两句被中止了 <% Response.end %> <% response.write "你的来访时间是:"&"<br>"&now %> <p></p> <font size="5" color="#FF0000"> <% response.write "你的来访时间是:"&now %> </font> 哈哈
</body> </html>
三 Response.redirect("url")
引导客户浏览器到另一个url时,我们通常使用超连接,但是使用超连接时必需通过点击超连接的标志,如果我们在某些情况下希望自动连接到其它页面,这时就可以使用redirect方法,自动引导又叫做"重定向",在使用重定向时一般还需要在文档的开头加上一句<% Response.Buffer=" True " %>;
四 Response.Buffer
Buffer是Response的一个属性,叫做缓冲器,缓冲器Buffer的取值为true和false,默认为false,当设置为true时,服务器端的数据会先输出到缓冲区,然后再从缓冲区输出至客户端,如果取默认状态下的false,则服务器端的数据会直接输出到客户端浏览器;
格式; <% Response.Buffer=true %>
示例3
<% Response.Buffer=true %> <html> <head> <title>asp简单程序</title> </head> <body> <form action="" method=post target="blank"> 你要到哪里去?<br> 闪客启航论坛 <input type="radio" name=radio value="闪客启航论坛"><br> 中国老三届论坛 <input type="radio" name=radio value="中国老三届论坛"><br> <input type="submit" value="确定"> </form> <% if Request.form("radio")="闪客启航论坛" then Response.redirect("http://bbs.flasher123.com/") '引导至闪客起航 elseif Request.form("radio")="中国老三届论坛" then Response.redirect("http://bbs.cnlsj.com/") '中国老三届论坛 end if %> </body> </html>
示例解读:
程序第一部分首先设置Response对象的缓冲器Buffer为真,这时数据会先保存到缓冲区内,然后再发送给客户的浏览器,第二部分使用html语言定义一个表单,表单中写入了三个按钮控件,用来接收客户的选择,第三部分使用条件语句判断客户是如何选择的,并将其选择使用重定向方法redirect引导至相应的url,本例旨在说明使用重定向方法redirect时一定要首先把缓冲器Buffer设为true,否则程序会输出错误信息;
五 Response.Clear
Clear方法用来清除在缓存区中的所有html页面,使用Clear方法和使用重定向方法redirect一样,也要首先把缓冲器Buffer设为真,在语句中使用清除方法Clear和使用中止方法end有点相反的味道,一个程序加入了end则end语句下面的程序就不再执行了,而一个程序中加入了Clear,则Clear前面的语句被清除,Clear后面的语句会继续执行;
示例4
<% Response.Buffer=true %> <html> <head> <title>asp简单程序</title> </head> <body> <center> <h2>欢迎光临</h2> Asp测试 </center><br> 你的来访时间是:<% response.write(now) %><br> <% response.write "你的来访时间是:"&"<br>"&now %> <p></p> <% Response.Clear %> 上面的两句被清除了<br> <font size="5" color="#FF0000"> <% response.write "你的来访时间是:"&now %> </font> 哈哈 </body> </html>
Cookies
Cookies是服务器端和客户端传递的http头部信息,这些信息被保存成文本格式的小文件,存贮在客户端的浏览器或硬盘上,客户可以用浏览器的工具对Cookie进行设置,以便决定是否使用它; Cookies的存在形式有两种,一种是只在浏览器打开时存在,浏览器关闭后就消失了,这种方式的叫会话Cookies,另一种是把Cookies写入客户的硬盘中叫永久性Cookies当然这种永久是相对的,如果客户使用浏览器Internet选项中的工具删除它,或者硬盘被格式化了,保存的Cookies就没了,要应用Cookies首先是设置一个Cookies并把它写入客户的硬盘中;
一 设置Cookies
语法;
Response.Cookies("Cookies_name")[("key")|.property]=value 参数: Cookie_name 为Cookies变量的名称 key 为可选参数,用字典把key翻译成中文则为"关键字",如果指定了关键字,则Cookies就是一个集合,并将value的值赋给这个关键字; value为赋给Cookies_name的值 property为key的属性,指定Cookies自身的某些信息,如下所示:
property属性的取值: 1 Expires 指定 cookies 的过期时间 2 Domain 指定cookies 发送到的网域 3 Path 指定cookies送到的路径
二 访问Cookies
语法:
Request.Cookies("Cookie_name")[("key")|.property]
示例1
查看自己电脑中的Cookies,对于windwos xp参考下面路径找到Cookies文件夹,打开后我们就会看到很多Cookies文本文件,观察完毕后使用浏览器的工具删除之,然后去登陆闪客启航论坛,再去看看Cookies文件,是不是多了一些文本文件;
C:\Documents and Settings\...\Cookies
示例2-写入Cookies
<% Response.Cookies("user_name")="longka" Response.Cookies("user_name").expires=#2006-5-1# %> <html> <head><title>asp简单程序</title></head> <body> 试试Cookies </body> </html>
示例解读: 1 第一行设置了一个变量名为user_name的Cookies,并且给他赋值为字符串longka 2 第二行使用属性Expires指定了Cookies的有效期,如果我们不指定有效期则这个 Cookies就不会写入客户的硬盘,此时由第一句创建的Cookies只是临时保存在客户的 浏览器中,当浏览器关闭后,该Cookies就消失了,叫做会话Cookies 3 Response.Cookies方法必须用在所有html元素的最前面,如果你想在文件的任意地方使用它,则必须在文件的开始处加<% Response.Buffer=true %>,即:首先设置Response对象的缓冲器Buffer为真,把数据先保存到缓冲区,这和引导客户浏览器到另一个url的Response.redirect对象方法是类似的; 4 在自己的电脑中看看我们写入的Cookies文件
示例3-取回Cookies
<html> <head><title>asp简单程序</title></head> <body> 试试Cookies<br> <% dim a a=request.cookies("user_name") response.write("你写入的Cookies为:"&a) %> </body> </html>
示例解读: 使用request.cookies方法,可以取回使用Response.Cookies方法写入客户硬盘中的信息
示例4-写入Cookies
<% Response.Buffer=true %> <html> <head><title>asp简单程序</title></head> <body> 设置Cookies <% Response.Cookies("my_name")="aa" Response.Cookies("you_name")="bb" Response.Cookies("my_name").expires=#2006-5-1#
%> </body> </html>
示例5-取回Cookies
<html> <head><title>asp简单程序</title></head> <body> 取回Cookies<br> <% dim ap ap=request.cookies("my_name") response.write("你写入的Cookies为:"&ap) %> <br> <% dim bp bp=request.cookies("you_name") response.write("你写入的Cookies为:"&bp) %> </body> </html>
示例解读; 示例4和示例5同时操作了两个cookies,经测试结果虽然是可行的,但是在asp中通常不这样进行操作,而是使用关键字设置和取回多个cookies,从下面的示例中我们可以看到要方便许多,特别是取回多个cookies时;
示例6-带关键字Cookies
<% Response.Buffer=true %> <html> <head><title>asp简单程序</title></head> <body> 试试Cookies <% Response.Cookies("my_name")("my_name1")="aa1" Response.Cookies("my_name")("my_name2")="aa2" Response.Cookies("my_name")("my_name3")="aa3" Response.Cookies("my_name").expires=#2006-5-1# %> </body> </html>
示例7-返回
<html> <head><title>asp简单程序</title></head> <body> 试试Cookies<br> <% dim ass ass=request.cookies("my_name") response.write("你写入的Cookies为:"&ass)
%> </body> </html>
注:本例返回的是最近点击的示例4或示例6的值
示例8-几次光临
<% dim num num=request.cookies("ta_nam") if num > "0" then num=num+1 Response.write("你现在是第"&num&"次访问这里了") else Response.write("欢迎你首次访问这里") num=1 end if response.cookies("ta_nam")=num response.cookies("ta_nam").expires=#2006-1-1# %>
示例解读:
定义一个变量num用来保存获取的名为ta_nam的cookies,当你首次访问时ta_nam尚未写 入硬盘,num为空值,所以执行else后面的语句输出-欢迎你首次访问这里,输出完毕后,继续向下执行语句就会把response.cookies方法的ta_nam变量,写到客户硬盘中了,以后 再次访问,num总是会大于0,故执行num=num+1,计算出客户访问的次数;
会话对象-Session
我们在访问一个论坛的期间,叫做会话期间,在这个期间产生的各种信息叫做会话信息,Session就是用来处理会话信息的一个对象,在会话期间Session可以将变量,对象和数组保存到客户的Cookies中,所以如果客户禁用了Cookies,则Session的会话功能将不能使用,Session的使用格式很简单,如下:
一 Session的基本应用
Session("变量名")=赋值表达式
1 Session对象有两个属性: (1)Session.SessionID 存贮用户的SessionID,在会话期间服务器会为每一个客户生成一个单独的标记即SessionID,它以长整形数据类型返回,可以用于 Web 页面的注册统计;
(2)Session.TimeOut 设置Session的有效时长,一个Session对象从保存到失效默认是20分钟,如果客户长时间不刷新页面或提交请求,Session对象就会自动结束, TimeOut属性可以设置Session对象的有效时长,格式为:Session.TimeOut=整数(分);
2 Session对象有一个方法: Session.Abandon 用于清除Session对象, 3 Session对象有两个事件; (1)Session_OnStart 在Session对象开始之前调用这个程序 (2)Session_OnEnd 在Session对象结束之后调用这个程序
示例1
(1)写入Session
<html> <head><title>asp简单程序</title></head> <body> 创建Session对象并为该对象的变量your_name赋值 <% Session("your_name")="小赵" Session("your_age")=30 %> </body> </html>
(2)显示Session
<html> <head><title>asp简单程序</title></head> <body> 显示Session <br> 获取并输出Session("your_name")的值 <% response.write(Session("your_name")) %> <br> <% response.write(Session("your_age")) %> </body> </html>
示例2
(1)p2-1.htm
创建一个表单并将表单的信息发送到p2-2.asp文件中 <html> <body> <form action="p2-2.asp" method=post > 用户姓名: <input type="text" name="my_text1" size="19"><br> 用户密码: <input type="password" name="password"> <input type="submit" name="mytype" value="提交"> </form> </body> </html>
(2)p2_2.asp
使用Request对象的form方法获取表单中文本框my_text1的值,并将该值保存到 Session对象的变量kk中
<html> <body> <% Session("kk")=Request.form("my_text1") response.write("你输入的姓名:"&Session("kk")) %> </body> </html>
(3)p2-3.asp
<html> <body> <% response.write("你输入的姓名:"&Session("kk")) %> </body> </html>
示例p2-2.asp解读: 点击p2-1.htm中的提交按钮,则客户在表单中输入的信息发送给p2-2.asp文件并将其打 开,显示你输入的信息,p2-2.asp文件有两个功能,其一是接收表单发来的信息,这个由 Request.form("my_text1")完成,其二是在客户首次来访时创建Session对象,并对其赋 值和保存到Cookies中,再次来访时重新赋值,p2-3文件只有访问Cookies中Session对象 的功能,没有对其改写的功能;
示例p3-1.asp
设置 Session有效时长
<% Response.Buffer=true %> <html> <head><title>asp简单程序</title></head> <body> <form action="" method=post > 设置时长:输入代表分钟的数字<br> <input type="text" name="m_text" size="19"><br> <input type="submit" name="mytype" value="设置"> <input type="Hidden" name="ss" value="688"> </form> <% if Request.form("m_text")<>"" then dim aa_s aa_s=cint(Request.form("m_text")) Session.Timeout=aa_s end if %> <% if Request.form("ss")="688" then Response.redirect("p3-2.asp") end if %> </body> </html>
示例p3-2.asp
<html> <head><title>asp简单程序</title></head> <body> <%response.write("你的Session.SessionID为:"&Session.SessionID)%><br> <%response.write("你的Session.Timeout时长为:"&Session.Timeout)%> </body> </html>
示例4
(1)p4-1.asp
<html> <head><title>asp简单程序</title></head> <body> <% if Session("ss_name")<>"" then response.write("热烈欢迎"&Session("ss_name")&"的到来") else %> <form action="p4-2.asp" method=post %> 用户姓名: <input type="text" name="my_text1" size="19"><br> 用户密码: <input type="password" name="password"> <input type="submit" name="mytype" value="提交"> </form> <% end if %> </body> </html>
示例解读: 程序使用条件语句判断客户是否已经在Cookies中保存了姓名,如果Session ("ss_name")不为空值,说明已经提交了姓名,则输出欢迎信息,否则就构造一个表单,供 客户在文本框输入姓名并提交;
(2)p4-2.asp
<html> <body> <p> <% Session("ss_name")=Request.form("my_text1") Session("password")=Request.form("password") if Session("ss_name")<>"" then response.write("注册成功,欢迎"&Session("ss_name")&"的到来") else response.write("你需要返回去提交你的姓名") end if %> </p> <p><a href="p4-1.asp">返回 </a></p> </body> </html>
示例解读: 本页接收p4-1.asp表单中的信息,并把其保存到Cookies中,使用条件语句判断 Session的值,输出相应的语句
示例5
<html> <body> <% dim my_array(3) '定义数组 my_array(0)="小李" '为数组元素赋值 my_array(1)="小王" my_array(2)="小红" my_array(3)="小黄" Session("m_y_array")=my_array '将数组保存到Session对象中 %> <%response.write (Session("m_y_array")(0)) %> <br> <%response.write (Session("m_y_array")(1)) %> <br> <%response.write (Session("m_y_array")(2)) %> <br> <%response.write (Session("m_y_array")(3)) %> <br> </body> </html>
共享对象-Application
Application是asp的内置对象,主要用来保存变量和其它对象,Application保存的内容对所有客户都是可见的,也就是说所有用户都可以访问它,这和Session有较大不同,Session对象记载的信息是特定的,每个客户只能访问自己的Session,不能访问他人的Session,数据之间是不能共享的,这种情况类似于局部变量和全局变量的概念;
一 Application对象
1 定义属性 为Application对象定义属性非常简单,如下所示:
格式: Application("属性")=值
示例p1.asp
<% Application("my_a1")="a" Application("my_a2")="b" Application("my_a3")=5 response.write(Application("my_a1")) response.write(Application("my_a2")) response.write(Application("my_a3")) %>
2 Contents集合
当为Application对象定义多个属性时,这些属性就构成了属性集合,属性集合的名称用Contents表示,下面的示例和上面的示例结果是一样的,只是上面的隐藏了Contents集合;
示例p2-1.asp
<% Application.Contents("my_a1")="a" Application.Contents("my_a2")="b" Application.Contents("my_a3")="c" response.write(Application.Contents("my_a1")) response.write(Application.Contents("my_a2")) response.write(Application.Contents("my_a3")) %>
示例p2-2.asp 使用for...in循环语句可以枚举Contents集合的元素和访问每个元素的值
<% Application.Contents("my_b1")="q" Application.Contents("my_b2")="w" Application.Contents("my_b3")="s" for each key in Application.Contents response.write(key&"="&Application(key)) next %>
3 Contents集合的方法
Contents集合有两个用于删除Application对象的方法,他们是: Application.Contents.remove "属性名" 用于删除指定的属性 Application.Contents.removeAll 用于删除所有属性
示例3
<% Application.Contents.removeAll %>
4 两个方法: (1)Application.lock 锁定Application对象,使其它用户无权访问 (2)Application.unlock 解除锁定
因为Appliction是多用户的,如果有两个客户同时更改Application的值就会出问题,此时使用锁定和解除锁定的方法,可以解决多用户的数据写入问题,在修改之前进行锁定,完毕后解除锁定就可以了
示例p4.asp
<% Application.lock Application("callin_number")=Application("callin_number")+1 Application.unlock response.write("你是第"&Application("callin_number")&"位来访者") %>
5 两个事件 (1)Application_OnStart 在第一个请求Application的页面被调用时触发,Application的自动触发只用一次,就是第一个用户的第一次请求,而不是象 Session对象那样在每一个新用户请求后就触发; (2)Application_OnEnd 该Application结束后调用 这两个事件必须定义在Global.asa文件中
二 Global.asa文件
Asp应用程序的概念:Asp应用程序和其它语言中的应用程序在概念上有点区别,在其它语言中,应用程序指的是能够完成某些功能的可执行文件,而在asp中指的是添加了虚拟目录的文件夹,这个文件夹也就是一个网站,通常一个网站有很多asp文件组成,这些文件的集合就是asp的应用程序; Session对象和Application对象都有两个事件,要使用他们的事件,就必须首先在Global.asa文件文件中声明,该文件对于用户来说是不可见的,文件名也是固定的,并且该文件还必须放在应用程序的根目录下,每个应用程序只能拥有一个Global.asa文件;
应用语法:
<script language="vbscript" runat="server"> sub Application_OnStart end sub sub Application_OnEnd end sub sub session_OnStart end sub sub session_OnEnd end sub </script>
这个文件必须保存为Global.asa,放到根目录中,如果你不想使用Session对象和Application对象中的事件,也可以不要这个文件;
访问人数和在线人数统计示例 (1)Global.asa <script language="vbscript" runat="server"> sub Application_OnStart Application.lock Application("on_all")=0 Application("on_line")=0 Application.unlock end sub sub Session_OnStart Application.lock Application("on_all")= Application("on_all")+1 Application("on_line")=Application("on_line")+1 Application.unlock end sub sub Session_OnEnd Application.lock Application("on_line")=Application("on_line")-1 Application.unlock end sub </script>
示例解读: 创建Global.asa文件放在根目录中,该文件用来定义当Session和Application对象第一次被调用或结束时触发的两个事件,当第一个请求触发Application的事件时,初始化on_all和on_line两个变量,Application的事件只触发一次,以后Session对象会在每一个用户发出请求后触发Session_OnStart事件,从而使实现相应变量的值进行加减,其中<script language="vbscript" runat="server">表示默认的asp语言是Vbscript,runat="server"指在服务器端运行;
(2)(查看访问人次)
p5.asp
<html> <body> <% response.write("访问总人数:")&Application("on_all") response.write("在线的人数:")&Application("on_line")
%> </html> </body>
清空在线人数
<% Application.lock Application("on_line")=0 Application.unlock %>
服务器对象-Server
专门用来处理服务器特定任务的对象称Server对象,所谓的特定任务主要指的是 与服务器环境有关的一些任务,Server对象的语法如下:
Server.property|method
Server对象的属性和方法: 一个属性 Server.Scripttimeout 指定程序运行的时间
一些方法 Server.Htmlencode 转换指定的html代码 Server.Createobject 建立一个对象实例 Server.Execute 执行一个asp文件 Server.Getlasterror 返回一个错误代码 Server.Mappath 将相对路径转换为绝对路径 Server.Transfer 向其它asp文件发送信息 Server.Urlencode 以url形式转化指定的代码
一 Server.Scripttimeout属性
Scripttimeout属性用来指定程序的最大运行时间,默认是90秒,主要用来防止可能产生的死循环;
示例s1.asp
<% Server.Scripttimeout=200 '设置程序在200秒后停止运行 %>
<% response.write Server.Scripttimeout '查看所设置的程序运行时间 %>
二 Server.Htmlencode 方法
某些字符如尖括号,引号,空格等有时会被浏览器错误解释,此时可以用这个方法 进行转换,当要在页面上输出html语句时,使用该方法转换也很方便;
示例s2-1.asp
<html> <head><title>asp简单程序</title></head> <body> <% response.write "<a href='http://bbs.flasher123.com/'>闪客启航</a>" response.write "<br>" response.write Server.Htmlencode("<a href='http://bbs.flasher123.com/'>闪 客启航</a>") %> <br> "<a href='http://bbs.flasher123.com/'>闪客启航</a>" </body> </html>
示例s2-2.asp
<% response.write "<html>" response.write Server.Htmlencode("<html>") response.write "</html>" %>
三 Server.Urlencode方法
Server.Urlencode方法与Server.Htmlencode方法是类似的,它主要用来对url字符串进行编码;
应用格式:
Server.URLencode(string) string要转化的字符串
示例s3_1.asp
<html> <head><title>asp简单程序</title></head> <body> <% response.write Server.Htmlencode("http://bbs.flasher123.com/") response.write "<p>" response.write "http://bbs.flasher123.com/" response.write "<p>" response.write Server.URLencode("http://bbs.flasher123.com/") response.write "<p>" %> </body> </html> 显示结果: http://bbs.flasher123.com/
http://bbs.flasher123.com/
http%3A%2F%2Fbbs%2Eflasher123%2Ecom%2F
(这一行就是Server.Urlencode方法编码的结果)
四 Server.Mappath 方法 Server.Mappath方法将指定的虚拟或相对路径映射到服务器上相应的物理目录上,返回在url中指定的文件的完整物理路径;
应用格式: Server.Mappath(path)
参数path为虚拟路径字符串
示例4-1.asp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> </head> <body> <a href="s2-2.asp" target="_blank">连接同一文件夹中的本地示例文件"s2- 2.asp"</a><br> <a href="../ch8/p3.asp" target="_blank">连接不同文件夹中的本地示例文件"p 3.asp"</a> <!-- <对应 < >对应 > "对应 " --> <% dim a,b a=Server.Mappath("s2-2.asp") b=Server.Mappath("../ch8/p3.asp") response.write a response.write "<br>" response.write b %> </body> </html> 结果显示: e:\www_root\user_flasher123.com\vhost\HomeDir\longka_flasher123_com\web\wwwroot\a_asp\aa\ch12\s2-2.asp e:\www_root\user_flasher123.com\vhost\HomeDir\longka_flasher123_com\web\wwwroot\a_asp\aa\ch8\p3.asp
五 Server.Execute方法
应用格式: Server.Execute(path) path为所要执行的asp页面的路径;
Server.Execute方法用来停止当前的网页,转到另一个网页执行,执行完毕后再返回来继续执行这个页面的语句;
示例s5-1.asp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> </head> <body> <% Server.Scripttimeout=200 response.write Server.Scripttimeout response.write "<br>" response.write Server.Htmlencode("<a href='http://bbs.flasher123.com/'>闪客启航</a>") response.write "<br>" response.write Server.URLencode("http://bbs.flasher123.com/") response.write "<br>" response.write Server.Execute("pp5-2.asp") response.write "<br>" response.write Server.Mappath("s2-2.asp") %> </body> </html>
示例pp5-2.asp <% dim a,b,c a=2 b=3 c=a^2+b^2 response.write "a和b的平方和是:" & c %>
六 Server.Transfer
应用格式: Server.Transfer(path) path为所要执行的asp页面的路径;
Server.Transfer 执行另一个asp文件,完成后停止;
示例s6-1.asp
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> </head> <body> <% Server.Scripttimeout=200 response.write Server.Scripttimeout response.write Server.Transfer("pp5-2.asp") response.write Server.Mappath("s2-2.asp") %> </body> </html>
七 Server.Createobject
是Server对象中最重要的方法,主要用来建立和返回一个已注册组件实例; 应用格式:
Set Server.Createobject(Objname)
Objname为某个ActiveX组件的名称
文件存取组件
第一节 系统文件对象FileSystemObject
在asp中要对文本文件进行操作,可以使用FileSystemObject对象来实现
============================================================= 一 创建系统文件对象 ============================================================= 系统文件对象FileSystemObject主要用来对文件和文件夹进行创建,打开,复制,删除等操作
语法 dim FSO
Set FSO=Server.CreateObject("Scripting.FileSystemObject")
FileSystemObject对象有一些方法,简述如下
一 文件File操作方法:
1 CreatTextFile 新建文件
2 OpenTextFile 打开文件
3 GetFile 返回一个File对象
4 CopyFile 复制文件
5 MoveFile 移动文件
6 DeleteFile 删除文件
7 FileExists 判断文件是否存在
8 GetFileName 返回文件名
9 GetExtensionName 返回文件扩展名
二 文件夹Folder操作方法:
1 CreateFolder 新建一个文件夹
2 CopyFolder 复制文件夹
3 GetFolder 返回Folder对象
4 MoveFolder 移动文件夹
5 DeleteFolder 删除文件夹
6 FolderExists 判断文件夹是否存在
7 GetParentFolderName 返回上一级文件夹名称
============================================================= 二 CreatTextFile方法与TextStream对象 ============================================================= 在FileSystemObject对象上调用CreatTextFile方法,就可以创建一个新文件,实际应用中,在调用CreatTextFile方法时,通常会用Set语句为该方法创建一个引用实例,这个实例一般叫做文本流对象,用TextStream表示,可以简称TS,其创建语法如下:
dim TS Set TS=FSO.CreatTextFile(filename,[OverWrite],[Unicode])
参数 (1) filename指定要建立的文件名及其路径 (2) OverWrite布尔值,默认为ture,,为False时不允许覆盖同名文件. (3) Unicode布尔值,默认为False,用于创建ASCII文件,为ture时将创建Unicode文件.
文本流对象TS有一个光标,和打开记事本的光标类似,用来指示敲入字符将要出现的位置,同时指出要读取字符的位置,文本流对象TS有自己的属性和方法
TS对象的属性与方法:
1 AtEndOfline 属性 只读布尔值,当光标在当前行的末尾时,其值为ture,否则为flase 2 AtEndOfStream 属性 只读布尔值,当光标在文本流末尾时,其值为ture,否则为flase 3 Column 属性 只读整数,统计从行首到当前光标位置之间的字符数 4 Line 属性 只读整数,指明光标所在行在整个文件中的行号
5 Close 方法: 关闭文件
6 Read(Number)方法: 从光标开始读取一定数目的字符
7 ReadAll 方法: 读取文件所有数据
8 ReadLine 方法: 读取一行数据
9 Skip(Number) 方法:将光标的位置移动一定数目的字符串长度
10 SkipLines(Number) 方法:将光标的位置移动一定数目的行数
11 Write(string) 方法:将字符串写入流中
12 Writeline([string])方法:将文本串写入流中
13 Writeblankline(Number)方法:将一定数目的空行写入流中
============================================================= 三 OpenTextFile方法与TextStream对象 ============================================================= 在FileSystemObject对象FSO上调用OpenTextFile方法,同样可以创建一个TextStream对象,实际应用中,在调用OpenTextFile方法时,通常会用Set语句为该方法创建一个文本流实例,我们用变量TS表示它
语法 dim TS Set TS=FSO.OpenTextFile(filename,[IOmode],[Creat],[Format]) 参数 (1) filename 指定要打开的文件名及其路径 (2) IOmode 可选常量,1为只读(默认),2为可写,8为可添加 (3) Creat 可选布尔值,指定打开文件时如果文件不存在是否要创建该文件,true是,false为否(默认) (4) Format指定文件格式,-2系统默认,-1为Unicode,0为ASCII
============================================================= 文件存取组件基本练习1 ============================================================= 示例1 创建文件添加内容newfile.asp ------------------------------------------------------------- <html> <head> <title>创建文件</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '调用CreatTextFile方法,创建新文件并且允许覆盖同名文件 dim TS 'Set TS=FSO.CreateTextFile("c:\Inetpub\wwwroot\10ActiveX\test.txt",true)
Set TS=FSO.CreateTextFile(Server.Mappath("test.txt"))
TS.WriteLine("aa") TS.WriteLine("bb") TS.Write("cc") TS.Write("dd") TS.WriteLine() '输出空字符串时会插入换行符 TS.Write("ss")
TS.Close Response.Write "新文件创建成功" %> </body> </html>
------------------------------------------------------------- 示例2 判断文件是否存在file_estimate.asp ------------------------------------------------------------- <html> <head> <title>判断文件是否存在</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '调用FileExists方法判断文件test.txt是否存在 'if FSO.FileExists("c:\Inetpub\wwwroot\10ActiveX\test.txt") then if FSO.FileExists(Server.Mappath("test.txt")) then Response.Write "文件存在" else Response.Write "文件不存在" end if
%> </body> </html>
------------------------------------------------------------- 示例3 逐行读取已有文件Open_ReadLine.asp ------------------------------------------------------------- <html> <head> <title>读取已有文件</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '在对象FSO上调用OpenTextFile方法创建TextStream对象 dim TS 'Set TS=FSO.OpenTextFile("c:\Inetpub\wwwroot\10ActiveX\test.txt")
Set TS=FSO.OpenTextFile(Server.Mappath("test.txt"))
'光标不在文本流末尾时执行循环 Do While Not TS.AtEndOfStream Response.Write "<h2>" '逐行读取 Response.Write TS.ReadLine Response.Write "<br>" Response.Write "</h2>" Loop TS.Close %> </body> </html>
------------------------------------------------------------- 示例4 读取文件所有内容ReadAll.asp -------------------------------------------------------------
<html> <head> <title>读取已有文件所有内容</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '在对象FSO上调用OpenTextFile方法创建TextStream对象 dim TS Set TS=FSO.OpenTextFile(Server.Mappath("test.txt"),1)
Response.Write TS.ReadAll TS.Close %> </body> </html>
------------------------------------------------------------
示例5 清空文件所有内容clear.asp ------------------------------------------------------------ <html> <head> <title>清空文件所有内容</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '在对象FSO上调用OpenTextFile方法创建TextStream对象 dim TS '打开文件时将文件属性设置为可写(2),则文件内容将被清空 Set TS=FSO.OpenTextFile(Server.Mappath("test.txt"),2) TS.Close Response.Write "文件内容已被清空" %> </body> </html>
------------------------------------------------------------
示例6 判断文件内容是否为空content.asp ------------------------------------------------------------ <html> <head> <title>判断文件内容是否为空</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '在对象FSO上调用OpenTextFile方法创建TextStream对象 dim TS Set TS=FSO.OpenTextFile(Server.Mappath("test.txt"),1)
if TS.AtEndOfStream then Response.Write "文件无内容" else Response.Write "文件内容显示如下:<br>" Response.Write TS.ReadAll end if
TS.Close %> </body> </html>
------------------------------------------------------------- 示例7 文本计数器visit_number.asp ------------------------------------------------------------- <html> <head> <title>文本计数器</title> </head> <body> <% '创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject") '声明一个变量,保存要创建或打开的文件及其路径 MyFile=Server.Mappath("num.txt") dim TS '以只读方式打开文件,如果文件不存在就创建它 Set TS=FSO.OpenTextFile(MyFile,1,true) '判断文件内容是否为空,如果为true则写入1
if TS.AtEndOfStream then Set TS=FSO.OpenTextFile(MyFile,2) TS.Write(1) TS.Close Response.Write "你访问本页的次数为1" else '声明一个变量,保存访问次数 dim visit_number '读取原有访问次数,并将其转换为长整型数据 Set TS=FSO.OpenTextFile(MyFile,1) visit_number=Clng(TS.ReadLine) TS.Close '将访问次数加1 visit_number=visit_number+1 '将新的访问次数写回文件中 Set TS=FSO.OpenTextFile(MyFile,2) TS.Write(visit_number) TS.Close Set TS=FSO.OpenTextFile(MyFile,1) visit_number=Clng(TS.ReadLine) Response.Write "本页的访问次数为"&visit_number TS.Close
end if
%> </body> </html>
=============================================================
留言板1 speech.asp ============================================================= speech.asp --------------------------------- <html> <head> <title>简单文本文件留言板</title> </head> <body bgcolor="#E0EeE0">
简单文本文件留言板 <form method="post" action="Writer.asp" name="form1" > 主题: <input type="text" name="title" size="40">** <p></p> 内容: <textarea name="body" rows="2" cols="38" > </textarea> <p></p> 姓名: <input type="text" name="name" size="20">** <input type="submit" value="提交" size="10"> </form> <hr> 注意: 本留言板保存10条最新记录,多余留言会自动删除 <p></p> <hr>
<%
dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject")
'读取显示所有文件内容 For k=1 To 10 '在对象FSO上调用OpenTextFile方法创建TextStream对象 Set TS=FSO.OpenTextFile(Server.Mappath("test"&k&".txt"))
'光标不在文本流末尾时执行循环 Do While Not TS.AtEndOfStream
'逐行读取
Response.Write TS.ReadLine Response.Write "<br>" Loop Response.Write "<hr>" Next TS.Close
%>
</body> </html>
---------------------------------------------- Writer.asp ----------------------------------------------
<% Response.Buffer=true
if Trim(Request.form("title"))<>"" and Trim(Request.form("body"))<>"" and Trim(Request.form("name"))<>"" then
dim title,body,name title=Trim(Request.form("title")) body=Trim(Request.form("body")) name=Trim(Request.form("name"))
'创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject")
'调用CreatTextFile方法,创建新文件并且允许覆盖同名文件 dim TS Set TS=FSO.CreateTextFile(Server.Mappath("test0.txt")) '将表单信息写入文本 TS.WriteLine("主题:"&title) TS.WriteLine("内容:"&body) Response.Write "<br>" TS.WriteLine("发言人:"&name) TS.WriteLine("发言时间:"&now()) TS.Close
'循环语句将一个文件内容移动到下一个文件中 For i=9 To 0 step -1 Set TS=FSO.OpenTextFile(Server.Mappath("test"& i &".txt"),1) dim tt tt=Trim(TS.ReadAll) TS.Close '将以上数据写回文件中 Set TS=FSO.OpenTextFile(Server.Mappath("test"&i+1&".txt"),2) TS.Write(tt) TS.Close Next
end if
Response.redirect("speech.asp")
%>
=============================================================
留言板2 leave_word.asp =============================================================
<html> <head> <title>简单留言板</title> </head> <body bgcolor="#CCCCFF">
简单留言板 <form method="post" action="" name="form1" > 主题: <input type="text" name="title" size="40">** <p></p> 内容: <textarea name="body" rows="2" cols="38" > </textarea> <p></p> 姓名: <input type="text" name="name" size="20">** <input type="submit" value="提交" size="10"> </form>
<% dim title,body,name title=Trim(Request.form("title")) body=Trim(Request.form("body")) name=Trim(Request.form("name")) dim myPageCounter '创建计数器组件实例 Set myPageCounter=Server.CreateObject("MSWC.PageCounter") '获取当前页访问次数 dim VisitNumber VisitNumber=myPageCounter.Hits Response.Write "当前页访问次数"&VisitNumber
'创建FileSystemObject对象 dim FSO Set FSO=Server.CreateObject("Scripting.FileSystemObject")
if title<>"" and body<>"" and name<>"" then '调用计数器组件的PageHit方法,将当前页访问次数加1 myPageCounter.PageHit '如果访问次数大于9,设置访问次数为0 if VisitNumber>9 then myPageCounter.Reset end if
Response.Write "<p></p>" '调用CreatTextFile方法,创建新文件并且允许覆盖同名文件 dim TS Set TS=FSO.CreateTextFile(Server.Mappath("test"&VisitNumber&".txt"))
'将表单信息写入文本 TS.WriteLine("主题:"&title) TS.WriteLine("内容:"&body) Response.Write "<br>" TS.WriteLine("发言人:"&name) TS.Close end if %>
<hr size=3 width=100%>
<% if FSO.FileExists(Server.Mappath("test1.txt")) then Response.Write "本留言板只保留最新10条留言,超过时旧留言会自动删除" Response.Write "<p></p>" Response.Write "<hr>" For i=1 To 10 '在对象FSO上调用OpenTextFile方法创建TextStream对象 Set TS=FSO.OpenTextFile(Server.Mappath("test"&i&".txt"))
'光标不在文本流末尾时执行循环 Do While Not TS.AtEndOfStream
'逐行读取
Response.Write TS.ReadLine Response.Write "<br>" Loop Response.Write "<p></p>" Response.Write "<hr>" Next TS.Close
end if
%>
</body> </html>
|