340 likes | 522 Views
ASP. 第 4 章 Request 和 Response 对象. ASP 内部对象. 什么叫对象? 对象的属性、方法和事件 内部对象 Request( 意 索取、请求 ) 对象:从客户端获取数据 Response ( 意 回答 ) 对象:向客户端输出数据 Session 对象:记载单个用户的信息 Application 对象:记载同一个应用程序中的所有用户之间的共享信息 Server 对象:提供服务器端的应用. Request 对象.
E N D
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></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"> <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"> <%=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">