ASP编程入门进阶(五):内置对象Response
2018-09-05 23:38
通过对Request对象的学习,可以了解到,Request对象是服务器端用来获取客户端的信息的。
但作为服务器和客户端进行交互,是不是还缺少服务器端向客户端发送信息呢?对象Response正是担任此责任。
负责将信息传递给用户的对象就是Response了,它可动态地响应客户端的请求,并将动态生成的响应结果返回给客户端浏览器。
一,Response.write
在Response中write方法是使用最频繁的一个了,write就是写:将指定的字符串写到当前的 HTTP 输出。
1,write.asp
<%
response.write(hello,world&<br>)
Randomize
response.write 任意数是&rnd()&<br>
%>
response.write后面为所显示的信息,可以用括号包含,也可以直接书写(注意和response.write之间有空格)。
书写的字符串信息或者HTML代码相关,用引号包含;而ASP本身的函数或变量则不需要,直接用即可。
并且无论字符串信息、HTML代码、函数还是变量之间进行连接都是采用&号(针对vbscript)
以上遇到一个随机函数rnd(),该函数返回一个小于 1 但大于或等于 0 的值。
需要注意的是在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有基于系统计时器的种子。
若缺少Randomize,则无法继续生成随机种子。
下面一个利用随机函数的例子,产生随机背景颜色效果:
<script language=vbs> Randomize 首先Randomize产生随机种子 suij=rnd() 接着将函数值赋变量suij suij=replace(suij,.,9) 然后对变量suij中小数点符号转换为数字9 suij=left(suij,6) 再取变量中的左6位 document.write <body bgcolor=#&suij&> 最后应用到背景颜色中去 </script>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
当然要产生指定范围的随机整数,请使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。
<script language=vbs> Do Until choose = vbNo value = Int((41 * Rnd) + 60) 产生 60 到 100 之间的随机数。 msgbox value choose = MsgBox (Roll again? , vbYesNo) Loop </script>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
随机函数在做考试系统的时候非常有用,当然你也可以用来自己摇奖,拿个头彩也分点我就行了
二,Response.end
这是Response常用的一种方法,使 Web 服务器停止处理脚本并返回当前结果,文件中剩余的内容将不被处理。
主要放在一页多功能的ASP页中,为让程序运行到此,抑或往下的程序没必要再执行显示……
2,end.asp
<%response.write now()
response.end 程序执行显示到此结束
response.write rnd()%>
三,Response.clear
该方法主要作用是清除缓冲区中的所有 HTML 输出,但该方法只清除响应正文而不清除响应标题。
该方法和end方法似相反,end是到此结束返回上面的结果,而clear却是清除上面的执行,然后只返回下面的结果。
3,clear.asp
<%response.write now()
response.clear 以上程序到此全被清除
response.write rnd()%>
下面通过一个例子来仔细看看end and clear
4,end2clear.asp
<%
filepath=request.servervariables(script_name)
user=Request.Form(username)
pwd=Request.Form(password)
%>
<form method=POST action=<%=filepath%>>
name:<input type=text name=username><br>
pwd:<input type=password name=password><br>
<input type=submit value=submit>
</form>
<%
If user=cnbruce and pwd=cnbruce Then
response.write 采用clear方法,上面的程序结果将清除。
response.clear 清空存储在缓存中的页面
Else
response.write 采用end方法,下面的程序将停运。
Response.End 立即停止脚本处理,并将缓存中的页面输出
End If
%>
如果你只看到“刷新”链接就表明clear方法已经生效<br>
<a href=<%=filepath%>>刷新</a>
以上程序中,当输入用户名和密码同为cnbruce的时候会发现clear方法的处理结果,反之是另外一个效果。
四,Response.redirect
Redirect 方法是让浏览器立即重定向到程序指定的URL地址。这在根据客户的不同响应,为不同的客户指定不同的页面,或根据不同的情况指定不同的页面时,显得非常重要。
该方法是立即生效的,在其后的脚本都不执行。
5,redirect.asp
<%response.redirect(
以上四则运用属于Response对象的几个比较重要的方法:write、end、clear、redirect等当然方法还有:AddHeader、AppendToLog、BinaryWrite、Flush……
早说过,一个ASP对象除了对象方法外,还有对象属性
那response对象的属性有哪些呢?
五,tentType
ContentType 属性指定服务器响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/html。
6,contenttype.asp(非text/html的)
<% Response.ContentType = text/HTML %>
<% Response.ContentType = image/GIF %>
<% Response.ContentType = image/JPEG %>
<% Response.ContentType = text/plain %>
<% Response.ContentType = image/JPEG %>
六,Response.charset
Charset 属性将字符集名称附加到 Response 对象中 content-type 标题的后面,用来设置服务器响应给客户端的文件字符编码。
7,charset.asp
<% Response.charset = big5 %>
中文显示,但采用的big5繁体的编码,所以看到的是乱码。
当然Response.ContentType和Response.charset应用得比较少了。直接在head头部属性里面添加就OK了。
七,Response.expires
该属性指定了在浏览器上缓冲存储的页,距过期还有多少时间。
如果用户在某个页过期之前又回到此页,就会显示缓冲区中的页面。
但若设置 response.expires=0,则可使缓存的页面立即过期。
这是一个较实用的属性,当客户通过 ASP 的登陆页面进入 WEB 站点后,应该利用该属性使登陆页面立即过期,以确保安全。
引用一个经典的例子
8,expires.asp
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader pragma,no-cache
Response.AddHeader cache-control,private
Response.CacheControl = no-cache
%>
八,Response.status
设置服务器要响应的状态行的值。Response.status=状态描述字符串,字符串可以为一个三位整数或一串说明文字组成,但必须防在<html>之前。
9,status.asp
<% Response.Status = 401 Unauthorized %>
九,Response.buffer
比较重要的一个,值为true or false。该属性指示是否缓冲页输出。
引用:当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了 Flush 或 End 方法后,服务器才将响应发送给客户端浏览器,服务器将输出发送给客户端浏览器后就不能再设置 Buffer 属性。因此应该在 .asp 文件的第一行调用 Response.Buffer。
Response.buffer=true
对于Response对象的属性和方法先到这里,剩下一个数据集合,即cookie。
继续看cookies讲座吧。
应用举例题
表单发OutLook邮件
<style> input{ border:1px solid navy; width:150} </style> <script> function test(){ var NewTitle=title.value; var NewContent=content.value; document.location.href=mailto:+aaa.value+?cc=+bbb.value+&bcc=+ccc.value+&subject=+NewTitle+&body=+NewContent; } </script> <pre> <font color=red>收件人: </font><input name=aaa><br> <font color=red>操送: </font><input name=bbb><br> <font color=red>密件操送: </font><input name=ccc><br> <font color=red>主题: </font><input name=title><br> <font color=red>内容: </font></pre><p> <textarea cols=30 rows=10 name=content></textarea><br> <input type=button value=send onClick=test()>
[Ctrl+A 全部选择进行拷贝 提示:可先修改部分代码,再点击运行]
ASP的
<%
submitname=request.form(submit)
if submitname=submit then
email=request.form(email)
cc=request.form(cc)
subject=request.form(subject)
body=request.form(body)
response.redirect(mailto:&email&?cc=&cc&&subject=&subject&&body=&body)
else
%>
<form name=form1 method=post action=email.asp>
email:<input name=email><br>
cc:<input name=cc><br>
subject:<input name=subject><br>
body:<input name=body><br>
<input type=submit name=submit value=submit>
</form>
<%end if%>
上一篇:FSO组件之驱动器操作