配色: 字号:
第4章 asp请求与响应
2012-05-13 | 阅:  转:  |  分享 
  

>le"bgcolor="#EFEFEF">
="重置">
引言什么是对象呢?客观世界中的任何实体都可以称为对象。例如:学生、班级、学校等等。所以:对象是一个封装数据属性和操作行为的实体。数据属
性描述了对象的静态特征,即对象的状态。操作又称为方法和服务,他描述的是对象的执行功能。一个对象可以包含有多个数据属性和操作。所以
:简单说对象就是一个被封装好的,具有一定特征的事物,作为用户可以不需要知道对象的内部结构和原理,直接使用。引言AtiveSe
rverPages提供了可在脚本中直接使用的内建对象,称为内置对象.它有七个内置。它们分别是:request对象、respo
nse对象、session对象、application对象、server对象和objectcontext对象、aperror对象。
引言第四章请求与响应本章主要内容:1. 了解HTML中数据传递方式2. 了解Request对象及其成员3. 使
用Request对象获取数据4. 了解Response对象及其成员5. 理解Cookie,以及Cookie的使用4.1
HTML中数据传递方式一、POST方法POST方法是通过Form表单的形式来实现的。method="post"action="">Name:Form表单的名称Method:数据的传递方法A
ction:接收并处理数据的程序4.1HTML中数据传递方式例如:“post"action="4-1.asp">请填写您的个人信息

名:

年龄:

ttype="reset"name="Submit2"value="重填">4.1HTML中数据传递方
式二、GET方法GET方法传递数据有两种形式。1、通过Form表单的形式来实现数据传递"method="GET"action="">4.1HTML中数据传递方式2、通过附加地址形式进行数
据传递方法:在连接的地址后面附加数据的形式进行数据传递。例如:2>说明:使用?将连接与传递的数据分开;传递多个数据时使用&符号分开;name=白芸,name是传递的数据名,白芸是进行传
递的数据,注意书写格式,没有引号。4.1HTML中数据传递方式三、GET方法和POST方法的区别GET方法和POST方
法的最大区别就是:GET方法是通过附加地址进行数据传递的;POST方法则是以单独的模块将数据发送到服务器的。所以:GET方法适用
于传递数据较少,传递信息的长度有限,具体与客户端浏览器和版本有关,还有使用GET方法所输入的信息在许多浏览器地址框内直接显示,适用
于安全性要求不高的情况;POST方法适用于传递数据较大,传递信息的长度没有限制,适用于安全性要求高的情况。4.2Reque
st对象Request对象的语法描述如下:Request[.collection|property|method](var
iable)Request对象共提供了1个属性,1个方法和5个数据集合4.2Request对象一、Request对象属
性属性名称:totalbytes语法格式:request.totalbytes含义:从客户断接收字节的长度4.2Req
uest对象二、Request对象的方法方法名称:binaryread语法格式:request.binaryread
含义:以二进制方式读取客户端使用post方法传送来的数据注意:使用该方法就不能使用数据集合,使用数据集合也不能使用该方法。所以实
际应用中多使用数据集合,而方法使用的很少4.2Request对象三、Request对象的数据集合集合就是由数据所组成
的数组。Request对象共有五个数据集合:Form数据集合、QueryString数据集合、cookies数据集合、Serve
rVariables数据集合和ClientCertificate数据集合。如果指定的变量不是上述五个集合中的一个,Request对
象将返回empty值。采用下面的语法可取得某个特定数据集合的内容值:内容值=Request[.collection](
“变量名称”)4.2Request对象(一)、Form数据集合功能:获取HTML的Form表单中,method方法为p
ost时,所传递的数据。4.2Request对象例如:"post"name="form1">姓名:

密码:
性别:puttype="radio"name="sex"value="男">男ttype="radio"name="sex"value="女">女
爱好:e="checkbox"name="love"value="音乐">音乐type="checkbox"name="love"value="计算机">计算机
职业:lectname="career">教育业option>金融业
其它 r>ttype="reset"value="重新填写"size="20">简述:roduction"rows="2"cols="40"wrasp="soft">>4.2Request对象方法一:通过表单控件名称获取集合中的数据<%Dimuser_
name,password,sex,love,career,introduction''定义变量user_name=Req
uest.Form("user_name")password=Request.Form("password")sex=Req
uest.Form("sex")love=Request.Form("love")career=Request.Form("c
areer")introduction=Request.Form("introduction")%>姓名:<%=user_n
ame%>
密码:<%=password%>
性别:<%=sex%>
爱好:<%=love%>

业:<%=career%>
简介:<%=introduction%>4.2Request对象方法二:通过表单控件
的整数索引获取集合中的数据<%Dimuser_name,password,sex,love,career,introduct
ion''定义变量user_name=Request.Form("user_name")password=Reques
t.Form(1)sex=Request.Form(2)love=Request.Form(3)career=Request
.Form(4)introduction=Request.Form(5)%>姓名:<%=user_name%>
密码
:<%=password%>
性别:<%=sex%>
爱好:<%=love%>
职业:<%=career%
>
简介:<%=introduction%>此方法当表单控件发生变化时,会引起值的错误,并且程序的可读性差,不推荐使用
4.2Request对象方法三:通过集合的count属性,修改方法二通过集合的count属性,可以读出集合的数量<%
Fori=0toRequest.Form.countResponse.writeRequest.Form(i)nex
t%>此方法可读性差,输出格式控制不方便,不推荐使用4.2Request对象方法四:使用foreach语句获取集合
中的数据foreachformelementinrequest.formresponse.writerequest
.form(formelement)&"
"next4.2Request对象说明:1、如下情况action="4-2.asp"method="post"name="form1">姓名:"text"name="user_name">
曾用名:r_name">
密码:

request.form(“user_name”)的值应是什么?4.2Reques
t对象2、如下情况
爱好:音乐ype="checkbox"name="love"value="数学">数学ame="love"value=“计算”>计算
request.form(“love”)的值应是什
么?4.2Request对象3、对于复选框,还可以定义不同的名字,而可以省略value属性(当然也可以不省略).ormaction="4-2.asp"method="post"name="form1">爱好:type=“checkbox”name=“love1”>音乐e2">数学计算4.2Re
quest对象4、对于下拉列表控件,如下情况name="form1">职业:
教育业e="金融业">金融业其它>
对于包含multiple属性的下拉列表控件,requ
est.form(“career”)的值是什么?同上。注:Multiple属性允许一次可选多个选项;缺省时,一次只能选一项。
4.2Request对象5、关于form中的action属性,如果action="",则表示由程序本身处理表单。这样表单和
处理程序就可以写在一个程序中。4.2Request对象例如:t"name="form1">姓名:

密码:
<%I
fRequest.Form("user_name")<>""andRequest.Form("password")<>""
thenDimuser_name,password,sex,love,career,introduction''定义
变量user_name=Request.Form("user_name")password=Request.Form("pa
ssword")endif%>姓名:<%=user_name%>
密码:<%=password%>
注意
if语句的使用。4.2Request对象6、Request.Form("user_name")书写,还可以简化为:Re
quest("user_name")不推荐使用该方法表单验证在B/S结构模式中,为了保证客户端数据提交的正确,在设计时通
常对客户端的数据进行验证。表单数据验证可在客户端进行,也可在服务器端进行。客户端验证主要采用JS技术。服务器端则采用ASP技术。
如果进行服务器端验证,则会增加服务器的负担,所以通常大都在客户端验证。为了确保数据的正确,通常是采用双重验证,即先在客户端验证
,然后在服务器端验证。下面主要介绍客户端数据验证。ipt">od="POST"action="add1.php"onSubmit="returnsubmitit();">le>
名称:"name"type="text">
联系电话:>
电子信箱:
例2:利用ajax技术实
现表单验证4.2Request对象(二)QueryString数据集合使用QueryString集合可以获取:A、获
取表单中以get方法传送的数据B、获取超连接传送的数据4.2Request对象例如1:<
formname="form1"method="get"action="submit3.asp">
请填写您的个人信息

姓名:xt"size="16">
年龄:="text"size="6">
mit"value="确定">重填">4.2Request对象处理程序如下:>

下面是你的个人信息

你的姓名:<%=request.querystring("name")%>

你的年龄:<%=request.querystring("age")%>
4.2Re
quest对象例如2:e=20&major=电子商务>查看郑宁的资料=19&major=电子商务>查看董建的资料4.2Request对象处理表单输
入程序SUBMIT4.ASP

下面是你的个人信息

<%response.writ
e"你的姓名:"&request.querystring("name")&"
"response.write"你的性别
:"&request.querystring("sex")&"
"response.write"你的年龄:"&reque
st.querystring("age")&"
"response.write"你的专业:"&request.query
string("major")&"
"%>4.2Request对象(三)Serve
rvariables数据集合语法Request.Servervariables(“ServerenvironmentV
ariable”)参数说明:ServerenvironmentVariable是环境变量名称也可以是HTTPHeader
s。下表列出了常用的环境变量。4.2Request对象例:建立一个简单的使用Servervariables集合显示服务
器环境变量的程序server5.asp<%d=request.servervariable
s("local_addr")response.write"接受请求的服务器地址为:"&d%>
4.2Request对象例:<%foreachnameinrequest.ser
vervariablesresponse.writename&":"&request.servervariables(name
)&"
"next%>4.2Request对象(四)ClientCertifi
cate数据集合ClientCertificate数据集合是从Web浏览器发布的请求中获取验证字段(由X.509标准指定)。语
法格式:Request.Clientcertificate(“关键字[子字段]”)4.2Request对象(五)Co
okies数据集合我们将在Response对象中与Response对象的Cooikes数据集合一块儿说明,在这里我们就不介绍了。
4.3Response对象4.3.1Response对象的成员4.3Response对象4.3Respo
nse对象4.3.2Response对象方法的使用一、Write方法1、语法:Response.Writevaria
nt参数说明:variant代表需要输出的数据,它可以是任何合法的数据类型,也可以是字符串。值得注意的是,字符串并不包括字符
组合“%>”或“””,如果需要,可用转义序列“%\>”或重复使用“””字符来实现。注意:此方法还可以简写成<%=variant%
>,但是当简写时,必须在每个variant的两端都有<%和%>。4.3Response对象<%
response.write“Hello,myfriend!”&”
”response.write“您好!”%
>4.3Response对象4.3Response对象二、Redirect方法1、
语法:Response.RedirectURL参数说明:URL表示浏览器重定向到的统一资源定位符。URL须放在“”的里
面。注意:在使用时,必须在脚本页面的首行加上<%Response.Buffer=true%>语句,否则脚本在运行时会出错
。此方法是立刻生效的,在其后边的脚本语句都不会执行,服务器也就不会将缓存的内容发送给客户端。此方法将产生一个将重定向URL作为链
接包含的自动响应正文。在使用此方法时,必须放在所有HTML元素之前,否则将出现错误信息。4.3Response对象例
首先是一个用户注册的页面,如果姓名处填写teacher,则显示一个“这是教师页面”的页面,如果填写student,则显示一个“这是
学生页面”的页面,否则出现一个“对不起,你是非法用户,请返回重新填写”的页面4.3Response对象注册界面4.3
Response对象<%response.buffer=true%><%dimnamena
me=request.form("name")ifname="teacher"thenresponse.redirect
"redirectc9.asp"elseifname="student"thenresponse.redire
ct"redirectd9.asp"elseresponse.write"对不起,你是非法用户,请"&"href=''redirecta9.asp''>"&"返回"&""&"重新填写"endifendif%>html>4.3Response对象三、Response对象的其他方法简介1、Flush方法Flush方
法可以决定服务器是否将缓冲区的信息立即发送到客户端。如果未将Response.Buffer设置为TRUE,则该方法在运行时将会出
错。语法如下:Response.flush例如:<%response.buffer=true%>ody><%Response.write“今天是星期一”Response.flushResponse.write“今天
是星期日”Response.clear%>4.3Response对象三、Respons
e对象的其他方法简介2、Clear方法此方法用来删除缓冲区中的所有HTML输出,但此方法只删除响应正文,而不删除响应标题。它一
般用来处理错误情况,应该注意的是必须将Response.Buffer设置为TRUE,否则该方法在运行时将会出错。语法如下:
Response.Clear说明:A、该方法只清除HTML中的body部分,而html中head部分仍保留B、clea
r方法使用时,response的buffer属性一定要设置为true例如:<%response.buffer=true%><
html><%Response.write“今天是星期一”Response.write“今天是星期日”R
esponse.clear%>4.3Response对象3、End方法End方法使W
EB服务器停止处理脚本并返回当前结果,文件中的剩余内容将不再被处理。如果已设置为TRUE,则调用此方法时自动将缓冲区的信息输出,如
果不希望输出,则可先调用Clear方法将缓冲区的内容删除。语法如下:Response.End例如:<%response.b
uffer=true%><%Response.write“今天是星期一”Response.en
dResponse.write“今天是星期日”%>4.3Response对象4、Ad
dHeader方法AddHeader方法可实现从名称到值设置HTML标题的功能,该方法常常用来响应要添加新的HTTP标题。一旦被
添加,将不能被删除。此方法仅供高级用户使用,高级用户建议使用该方法。语法如下:Response.AddHeader
Name,Value4.3Response对象5、AppendToLog方法此方法可以将指定的字符串添加到WEB服务器日
志条目的末尾。此方法主要用于追踪或分析用户资料。语法如下:Response.AppendToLog“要记录的字符串”
6、BinaryWrite方法该方法可以不经任何字符转换就能将指定的信息输出到客户端,主要用于非字符串信息。语法如下:
Response.BinaryWritedata4.3Response对象4.3.3Response对象的属性1、
buffer属性作用:该属性是用来控制ASP程序的运行方法。使用格式:Response.buffer=true|false
True——表示使用缓冲区,当所有的ASP脚本处理完后,才发送到客户端。False——表示不使用缓冲区,ASP脚本处理一句,发送
一句到客户端。这也说明了为什么end和clear方法以及redirect方法使用时,要设置buffer的属性为true2、ex
pires属性作用:该属性用来指定在浏览器上缓冲存储的页面距过期的时间,这个时间会直接影响浏览器直接读取客户端浏览器的缓冲区中
的数据,还是直接从web服务器中重新取得数据。使用格式:Response.expires=分钟数说明:A、值以分钟数来表示
B、如果值大于0,那么用户在某个页面过期之前,重新调用该页面时,客户浏览器直接从客户端缓冲区中读取,不再连接服务器。如果该页面过
期后,重新调用该页面时,客户浏览器将重新连接服务器读取页面。C、如果值为0,则页面不保存在客户端的缓冲区中D、该功能非常有用,
对于需要保密的页面,如含有密码的页面,一定要将该值设为04.3Response对象4.3.4访问和更新Cookies集
合一、Cookie的定义两个方面:一方面是利用Request对象获取客户端Cookie,另一方面是利用Response对象向客
户端写入Cookie。通常二者必须配合在一起作用,因此我们把它们放在一起介绍4.3Response对象二、通过Reque
st对象获取客户端Cookie语法:Cookievalue=Request.Cookies(Cookie)[(key)|.at
tribute]参数说明:(1)Cookie参数是表示一个这个Cookie的名称,指定要检索的值,是一个必要参数。(2)Ke
y参数用于从Cookie字典中检索子关键字的值,是一个可选参数。(3)Attribute参数是指定Cookie自身的有关信息,即
表示这个Cookie的属性值,其属性只有一个HasKeys,为只读,用于指定Cookie是否包含关键字。(4)CookieVa
lue表示所指定的Cookie的返回值。4.3Response对象三、通过Response对象向客户端写入Cookie语
法:Response.Cookies(Cookie)[(key)|.attribute]=Cookievalue参数说明:
(1)Cookie参数是表示一个这个Cookie的名称,指定要检索的值,是一个必要参数。(2)Key参数是一个可选参数。当选用K
ey时,cookies就是一个集合,关键字分别为集合中的元素,使用response对象就可以为不同的关键字赋值例如:Resp
onse.cookies(“username”)(“name1”)=“张三”Response.cookies(“username
”)(“name2”)=“李四”使用request对象就可以读出该值Request.cookies(“username”)(
“name1”)Request.cookies(“username”)(“name2”)4.3Response对象(
3)Attribute参数表示Cookie的属性值,其属性有5个expiresDomain、path、Secure、Haskey
s,常用的有expires,用来指定cookies到期的日期,如不指定则关闭网页后就到期。使用方法:Response.cook
ies(“cookiesname”).expires=时间时间的书写格式通常为:“月,日,年”或
#年-月-日#例如:“10,21,2004”#2004-10-21#注意:response的exp
ires属性和cookoies的expires属性是不同的。4.3Response对象(4)CookieValue用于指定
分配给key或attribute的值。注意:集合设置Cookie的值,若指定的Cookie不存在,则创建它;若存在,则设置新的值
并且将旧值删除。Cookies应用实例例1:简单的计数器<%response.buffer=true''打
开缓冲dimcountcount=request.cookies("vcount")''获取用户在HTTP
请求中发送的cookie值,并赋给count变量ifcount>"0"thencount=count
+1response.write("欢迎你第"&count&"访问本站。")else
count=1response.write("欢迎你首次访问本站!")endifrespo
nse.cookies("vcount")=count''将count的值写入到Cookie中response.flu
sh''立即发送缓冲区中的内容到客户端%>Cookies应用实例例2:使用cookies验证用户并决定页面的访问
权限,基本思路:首页程序<%ifrequest.cookies("cookname")=empt
ythenIfrequest.form("name")<>""thenResponse.cookie
s("cookname")=request.form("name")endif%>method="post"action="">

姓名:ame"size="12">
密码:="password"size="12">ue="提交"><%elseResponse.writerequest.cookies("ttname"
)&"你好"endif%>其他页面<%Response.Buffer=true%>tml><%ifrequest.cookies("cookname")=emptythenResponse.
redirect=“index.asp”Response.endendif%>编程,如果用
户没有登陆过本网站,则显示登陆界面,如果用户已登陆过本网站,则显示某某用户的名字。<%ifre
quest.cookies("name")=emptythen%>ost"action=“11.asp">姓名:ze="12">
密码:e="12">
m><%elseresponse.writerequest.cookies("name")endif%>ody>首页判断cookies显示用户有显示登陆界面无显示其他网页内容其他页面判断cookies
显示用户有转向首页无显示其他网页内容如果请求穿过安全通道(SSL),则返回ON。如果请求来自非安全通道,则返回OF
F。HTTPSHeaderName存储在标题文件中的值。未列入该表的标题文件必须以HTTP_作为前缀,以使ServerVa
riables集合检索其值。注意服务器将HeaderName中的下划线(-_)解释为实际标题中的坡折号。例如,如果您指定H
TTP_MY_HEADER,服务器将搜索以MY_HEADER为名发送的标题文件。HTTP_服务器使
用的CGI规格的修订。格式为CGI/revision。GATEWAY_INTERFACE内容的数据类型。如:“text/htm
l”。同附加信息的查询一起使用,如HTTP查询GET、POST和PUT。CONTENT_TYPE客户端发出内容的长度。
CONTENT_LENGTH客户端验证的主字段。CERT_SUBJECT服务器验证的主字段。CERT_SERVER_
SUBJECT服务器验证的颁发者字段。CERT_SERVER_ISSUER用户验证的序列号字段。CERT_SERIAL
NUMBER服务器验证私人关键字的位数,如1024。CERT_SECRETKEYSIZE安全套接子层连接关键字的位数
,如128。CERT_KEYSIZE客户端验证的唯一ID,以字符串方式返回。可作为整个客户端验证的签字。CERT_COO
KLE未被鉴定的用户名。AUTH_USER这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。AUTH_TY
PE该值输入到客户端的鉴定对话中。只有使用基本鉴定时,该变量才可用。AUTH_PASSWORD检索与原数据库路径相应
的物理路径。IIS通过将APPL_MD_PATH转换为物理(目录)路径以返回值。APPL_PHYSICAL_PATH检索I
SAPIDLL的(WAM)Application的原数据库路径。APPL_MD_PATH检索未处理表格中所有的标题。ALL
_RAW和ALL_HTTP不同,ALL_HTTP在标题文件名前面放置ALL_prefix,并且标题名称总是大写的。使用ALL_RA
W时,标题名称和值只在客户端发送时才出现。ALL_RAW客户端发送的所有HTTP标题文件。ALL_HTTP说明变量
提供URL的基本部分。URL应答请求并运行网关的服务器软件的名称和版本。格式为Name/version。SERVE
R_SOFTWARE请求信息协议的名称和修订。格式为protocol/revision。SERVER_PROTOCOL
包含0或1的字符串。如果安全端口处理了请求,则为1,否则为0。SERVER_PORT_SECURE发送请求的端口号。SER
VER_PORT出现在自引用URL中的服务器主机名、DNS化名或IP地址。SERVER_NAME执行脚本的虚
拟路径。用于自引用的URL。SCRIPT_NAME该方法用于提出请求。相当于用于HTTP的GET、HEAD、POST等等。R
EQUEST_METHOD用户发送的未映射的用户名字符串。该名称是用户实际发送的名称,与服务器上验证过滤器修改后的名称相对。REMOTE_USER发出请求的主机(client)名称。如果服务器无此信息,它将设置为空的MOTE_ADDR变量。REMOTE_HOST发出请求的远程主机(client)的IP地址。REMOTE_ADDR查询HTTP请求中问号(?)后的信息。QUERY_STRINGPATH_INFO转换后的版本,该变量获取路径并进行必要的由虚拟至物理的映射。PATH_TRANSLATED客户端提供的额外路径信息。可以使用这些虚拟路径和PATHPATH_INFO用户登录WindowsNT的帐号。LOGON_USER返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要。LOCAL_ADDR响应请求的IIS实例的原数据库路径。INSTANCE_META_PATH服务器返回的状态行的值。Status将PICS标记值添加到响应标题的PICS标记字段中。Pics表明客户端是否与服务器断开。IsClientConnected指定浏览器上缓存页面超时的日期和时间。ExpiresAbsolute在浏览器中缓存的页面超时前,指定缓存的时间。Expires指定响应的HTTP内容类型。ContentType将字符集的名称添加到内容类型标题中。Charset决定代理服务器是否能缓存ASP生成的输出。CacheControl表明页输出是否被缓冲。Buffer属性说明名称类型将变量作为字符串写入当前的HTTP输出。Write将重指示信息发送到浏览器,尝试连接另一个URL。Redirect立即发送缓冲的输出。Flush停止处理.asp文件并返回当前的结果。End清除任何缓冲的HTML输出。Clear将给出信息写入到当前HTTP输出中,并且不进行任何字符集转换。BinaryWrite在该请求的Web服务器日志条目后添加字符串。AppendToLog从名称到值设置HTML标题。AddHeader方法说明名称类型第张aperror对象asp的错误捕获和处理那么如何通过Request对象的form数据集合获取该表单中的数据呢?是两个文本框中的值,实际应用中,应尽量避免这种情况,也就是说要给不同的控件起不同的名称。AJAX全称为“AsynchronousJavaScriptandXML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

献花(0)
+1
(本文系暖忆琳首藏)
类似文章 更多
发表评论: