访问和更新kies集合
kies的值比asp其他集合(例如fr和servervariables)的值要复杂得多。kie是一小块由浏览器存贮在客户端系统上的文本,且随同每次请求发往它们应用于的域中的服务器。
asp使得应用kie较为容易,可以从request对象的kies集合中获得所有随同请求发出的kie值,并可创建或修改kie,通过respnse对象的kies集合发回给用户。
kie包含可用两种方式构造的信息,单值kie提供其值给代码是通过一个一般的类asp集合。然而,集合的每个成员可能本身也是一个集合,包含这种信息的kie通过称为多值(ultiple-value)kie。
创建一个单值的kie较为简单,如下所示:
respnse.kies(“ite-nae”) = “ite-value”
创建一个多值的kie,可以使用如下命令:
respnse.kies(“ite-nae”)(“sub-ite-nae”) = “sub-ite-value”
设置kie应用的域及路径及其有效期,我们使用:
respnse.kies(“ite-nae”).dain = “dain-url”
respnse.kies(“ite-nae”).path = “virtual-path”
respnse.kies(“ite-nae”).expires = #date#
通常,客户只在对创建kie的目录中的页面提出请求时,才将kie随请示发住服务器。通过指定path属性,可以指定站点中何处这个kie是合法的,并且这个kie将随请求发送。如果kie随对整个站点的页面请求发送,设置path为“/”。
假如expires属性没有设置,关闭当前的浏览器实例时,kie将被自动消除。
注意,我们在向浏览器发送任何输出时,已经创建了kie。因为,这些kie是页面http报头的一部分。
在asp 3.0中,缓冲的缺省状态是打开的,且没有输出被发送,除非使用respnse.flush指定做这个工作或者页面已到末端。这意味着创建kie的代码可以在页面上的任何位置,直到任何输出“刷新”(flush)到客户端前,它都可以被执行。
要读现有的kie,使用request.kies集合。可以单独访问其中的项目,方法类似于创建它们时使用的方法。
strsinglevalue = request.kies(“ite-nae”)
strsubitevalue = request.kies(“ite-nae”)(“sub-ite-nae”)
注意request.kies集合(和所有其他request集合一样)是只读的。respnse.kies集合是只写的,事实上可以访问这个集合中一系列kie的名称,而不是它们的值。
遍历kies集合
为了使用kies集合更加方便,可使用名称为haskeys的附加属性。假如访问的kie本身也是个集合,即它是一个多值的kie,这将返回true。使用haskeys属性,可以遍历完整的request.kies集合,从而获得所有kie的列表及它们的值。
fr eah bjite in request.kies
if request.kies(bjite).haskey then
‘use anther fr eah t iterate all subkeys
fr eah bjitekey in request.kies(bjite)
respnse.rite bjite & “(“ & bjitekey & “) = “_
& request.kies(bjite)(bjitekey) & “
”
next
else
‘print ut the kie string as nral
respnse.rite bjite & “ = ”& request.kies(bjite) & “
”
end if
next
这非常类似于前面的从request.fr集合中提取多个值的复杂代码。但是这里可以使用haskeys属性来判别每个条目是否为一个集合。而在fr例子里,必须查询request.fr(ite_nae).unt属性,这是因为fr集合(和所有的除kie外的其他集合)成员不可能是真正的集合。asp只是做了“幕后”的工作,得到了每个多条目集合的值。
fr和querystring的差异
了解了访问各种asp集合的技术以后,需要解决另一个问题是:fr和querystring集合之间的差异是什么?假如准备使用asp,毫无疑问应该清楚这种差异,但需要参考http工作方式来重新认识,理解它们。
通过http从eb服务器请求页面或其他资源,有两个通用的方法。可使用get方法直接获得资源,也可使用pst把值传给相应资源。get方法是缺省的,可以看一下本章前面的一个http请求的实例:
未完...点击下方链接下载完整文档