Transcript PPT4

ASP
第4章 Request和Response对象
ASP内部对象
• 什么叫对象?
• 对象的属性、方法和事件
• 内部对象
 Request(意索取、请求 )对象:从客户端获取数据
 Response (意回答 )对象:向客户端输出数据
 Session 对象:记载单个用户的信息
 Application 对象:记载同一个应用程序中的所有
用户之间的共享信息
 Server对象:提供服务器端的应用
Request对象
• Request对象用来获取客户端信息,依靠5种获取
方法(数据集合):QueryString、Form、
Cookies、ServerVariables、ClientCertificate。
• 语法:Request[.数据集合](参数)
例如:
<%
s1=Request.Form("t1") '获取表单元素t1的值
%>
使用Form数据集合获取表单信息
• 在ASP中,获取FORM表单中的信息就是用
Form获取方法来实现的。
• 语法:Request.Form(参数)
使用QueryString获取字符串信息
• 利用QueryString获取方法取到标识在URL
后面的变量及其值;
<a href=”1.asp?name=白芸&age=22”>
• 语法:Request.Querystring(“参数”)
使用ServerVariables获取环境变量
• 利用该方法可以获取服务端或客户端的一
些信息,如来访者的IP地址。
• 语法如下
Request.ServerVariables(variablename)
其中variablename表示环境变量名称字符串,
常用的环境变量 有:
REMOTE_ADDR客户端IP地址
使用ClientCertificate获取身份验证
• 如果客户端浏览器支持SSL(安全套接层)
协议,并且服务器端要求进行身份验证,
则利用ClientCertificate数据集合就可以获
取客户端浏览器的身份验证信息。
• 语法如下:
Request.ClientCertificate(keyword)
例如:Request.ClientCertificate("Subject")可
返回验证主题信息。
TotalBytes属性
• 该属性用来获取客户端发出的请求数据的
字节大小
• 语法如下:Request.TotalBytes
• 例如:
<% intCount=Request.TotalBytes
'返回客户端请求数据的字节大小%>
BinaryRead方法
• 用以二进制方式获取客户端用POST方法提交的数据。
• 语法为:Request.BinaryRead(count)
其中count表示准备读取数据的字节大小,取值可以是0至
Request.TotalBytes的整数。
• 例将以二进制方式获取提交的全部数据:
<%
Dim intCount,varData
intCount=Request.TotalBytes '返回提交数据的字节大小
varData=Request.BinaryRead(intCount) '读取指定大小的二
进制数据
%>
<html><head></head>
<body>
<form method="POST" action=“1.asp">
用户名:<input type="text" name="username" size="20"></p>
<p>密码:<input type="text" name="password"
size="20"></p>
<p><input type="submit" value="提交" name="B1"></p>
</form>
</body>
</html>
1.asp代码如下:
<%
dim username,password ' 采用Form方法获取信息
username=Request. Form ("username")
password=Request. Form ("password")
if username="admin" then
if password="admin888" then
Response.redirect"admin.asp"
Else
Response.Write "输入错误!"
End if
End if
%>
<form method="post" action="">
标题:
<input name="t1" type="text">
内容:
<textarea name="t2"></textarea>
<input type="submit" value="提交">
</form>
<%
dim t1,t2,t3
t1=trim(Request.Form("t1"))
t2=Request.Form("t2")
t3=Request.servervariables("REMOTE_ADDR")
conn.Execute "insert into zb(t1,t2,t3,t4) values ('"& t1 &"','" & t2 & "','" & t3
& "','" & now() & "')"
conn.close
response.redirect "http://www.jxcia.com"
%>
<html><head></head><body>
<p>您最喜欢的是什么职业:<br>
<a href=“1.asp?fav=教师">教师</a><p>
<a href=“1.asp?fav=工程师">工程师</a><p>
<a href=“1.asp?fav=推销员">推销员</a>
</body>
</html>
<html><head></head>
<body>
<%
fav=Request.QueryString("fav")
%>
您最喜欢的职业是:<%=fav%>
</body>
</html>
<html><head><title> QueryString获取方法范例</title></head><body>
<%
fav=Request.QueryString("fav")
if fav="教师" then
Application("fav1")=Application("fav1")+1
end if
if fav="工程师" then
application("fav2")=application("fav2")+1
end if
if fav="推销员" then
application("fav3")=application("fav3")+1
end if
%>
你最喜欢的职业是:<%=fav%><br>
大家最喜欢的职业票数累计结果如下:<br>
教师:<%=application("fav1")%>票<br>
工程师:<%=application("fav2")%>票<br>
推销员:<%=application("fav3")%>票<br>
</body>
</html>
在newadminlist.asp中
<a href="delete.asp?id=<%=rs("id")%>">删除</a>
在delete.asp中
<%
id=request.querystring("id")
sql="delete from zb where id =" & id
conn.Execute(sql)
conn.close
Response.Redirect "newadminlist.asp"
%>
点击链接将要删除的记录的ID号传递给delete.asp
在delete.asp中通过id=request.QueryString("id")以获得所传递过来的ID,
并以此为条件查询数据库,把此条记录给删除
再例如<a href="body.asp?id=<%=rs("ID")%>"><%=RS("title")%></a>,点
击链接,将ID号传递给body.asp
<html>
<head>
<title> ServerVariables获取方法范例</title>
</head>
<body>
<p>发送请求的端口号是:
<b><% =Request.servervariables("SERVER_PORT")
%></b><br>
<p>发送请求的远程主机的IP地址是:
<b><% =Request.servervariables("REMOTE_ADDR")
%></b><br>
</body>
</html>
上节课内容相关思考题
• 利用SQL语句向数据库添加记录
insert into 客户反馈(商品,评价,客户IP,反馈时
间) values (‘“&
&"','" &
& "','" &
& "','" &
& "')
• 当几个栏目共用一个列表页,如何向列表
页传递栏目类别?
Response对象
• Response对象用来向客户端输出信息 。
Response对象的数据集合
• Cookies负责设置客户端浏览器的Cookie值 。
• Cookie俗称甜饼,可以在客户端长期保存信息。它是服务
器端发送到客户端的一些文本文件,保存在客户的硬盘上
Cookies文件夹。
• 每个网站都可以有自己的Cookie,但是每个网站只能读取
自己的Cookie。
• Cookie有两种形式:会话Cookie和永久Cookie。前者是
临时性的,只在浏览器打开时存在;后者则永久地存在于
用户的硬盘上并在有效日期之前一直可用。
• 当用户访问某个网站,其访问信息(例如访问次数和用户
名)可利用Response对象的Cookies数据集合设置Cookie
的值并输出保存到客户端浏览器相应文件夹Cookies中对
应的文本文件中,利用Request对象的Cookies数据集合
来获取Cookie的值。
显示用户第几次光临本站
常用的属性
• 属性用于控制信息的输出方式
• Buffer:设置为缓冲信息。
• Expires :页面在缓存中保存的时间。分钟。
Response. Expires =10
• ContentType:
例如Response.ContentType=“image/jpg”
默认为Response.ContentType=“text/html”
Buffer属性
• 设置是否为缓冲信息。缓冲区是服务器内存的一部分区域,
用于暂时存放数据。
• 布尔值False / True ,规定是否缓冲页面输出。
• False 指示不缓存。服务器会一边处理每条ASP语句,一
边发送输出每条语句的处理结果。
• True 指示缓冲。服务器不会直接将每条ASP语句的处理
结果发送输出,而是暂时存放在缓冲区,直到页面上的所
有语句被处理,再将存放在缓冲区的处理结果整体输出到
客户端。
• IIS 4.0 默认为 False,而 IIS 5.0 及更高的版本默认为
true。
• 此属性应用意义不大。
• <%response.buffer= False %> <html><head><title>Buffer值范例
</title></head>
<boyd>
<%
response.write(“欢迎您”)
response.write(“访问”)
response.write(“盛达网站”)
%>
</body></html>
运行结果在浏览器上依次显示:“欢迎您”、“访问”、“盛达网
站”。
所传信息不放入缓冲区而直接被服务器传送到浏览器。命令执行后,
从上到下逐条顺序显示服务器端利用response对象传回的字符串。
• <%response.buffer=true%>
<html><head><title> Buffer值范例</title></head>
<body>
<%
response.write(“欢迎您”)
response.write(“访问”)
response.write(“盛达网站”)
%>
</body>
</html>
运行结果在浏览器上一次性显示:“欢迎您访问盛达网站”。
• 但是由于现在计算机处理速度快,网速快,所以这种时间上的差异基
本感觉不出来。
Response对象常用的方法
•
•
•
•
•
•
方法用于表示如何向页面输出信息
Write:直接送出信息给客户端。
Redirect:引导客户端至另一个URL位置。
End :结束程序运行。
Flush :立刻输出缓冲区中的页面内容 。
BinaryWrite:用于输出二进制数据等。
Write方法
•
•
•
•
向客户端输出信息
语法: Response.Write 变量数据或字符串
如:Response.Write “您来访的日期是” & Date()
如<%
response.write"您是第1次访问本站点。" &"<br>"
response.write"欢迎您常来~"
%>
• 简略语法:<%=变量数据或字符串%>
<%sql="select top 9 * from zbxxx where t='announce' order
by id desc"
set rs=db.execute(sql)
do while not rs.eof%>
<tr><td height="22" bgcolor="#F9F9F9">&nbsp;<span
class="STYLE9">●</span></span><a title="标题:
<%=rs("title")%>
发布时间:<%=rs("submit_date")%>浏览人次:
<%=rs("hits")%>人次"
href="jxcianew_ann/new_annbody.asp?id=<%=rs("ID")%>"
target="_blank">&nbsp;<%=left(RS("title"),12)%></a>
</td></tr>
<%rs.movenext
loop
%>
Redirect方法
• 类似超链接
• 自动引导,重定向
• 例
<%
ti=Left(Request.servervariables("REMOTE_ADDR"),2)
if ti="10" then
response.redirect "http://10.10.3.3/tyx/"
else
response.redirect "http://59.52.200.141/tyx/"
end if
%>
• <form method="post" action="">
标题:
<input name="t1" type="text">
内容:
<textarea name="t2"></textarea>
<input type="submit" value="提交">
</form>
• <%
dim t1,t2,t3
t1=trim(Request.Form("t1"))
t2=Request.Form("t2")
t3=Request.servervariables("REMOTE_ADDR")
conn.Execute "insert into zb(t1,t2,t3,t4) values ('"& t1
&"','" & t2 & "','" & t3 & "','" & now() & "')"
conn.close
response.redirect "http://www.jxcia.com"
%>
End 方法
• 结束程序运行。
BinaryWrite方法
• 该方法用于在不进行任何字符转换的情况
下以二进制方式输出信息 。
• 其语法为:Response.BinaryWrite 二进制
数据变量
• 该方法还可以和TotalBytes属性、
BinaryRead方法联合起来使用,以二进制
方式获取客户端提交的表单信息并以二进
制方式输出到页面上。
• 例如上传图片到数据库,输出图片到页面。
关于HTTP响应信息的复杂操作
• CacheControl属性:客户端浏览器可以缓存页面
内容,如用户再次访问该页面,如果内容没变,
直接调用客户端浏览器中的缓存页面(加快浏览速
度并可减轻服务器访问负载),如果页面内容题更
新了,则从服务器调新页面。
• 用于设置是否允许缓存,Public表示允许,
Private表示不允许。
例如:
Response. CacheControl=“Public”
Response. Expires =10
Content-Type和Charset属性
• 设置内容类型和字符集
• 利用Content-Type和Charset属性可以设置
输出页面的内容类型和字符集
• Response. Content-Type=“text/html”
Response. Charset =“gb2312”
• 等同于<meta http-equiv="Content-Type"
content="text/html; charset=gb2312">