ASP.net揭秘笔记之六

跟踪用户会话

Cookie是如何起作用的:
    Cookie在浏览器和服务器之间是通过Http Header来回传递。服务器首先在响应中使用Set-Cookie头部来创建一个cookie,从浏览器发出的后续请求就在Cookie头部中返回这个Cookie。

Set-Cookie:UserName=Bill+Gates;Path=/;domain=sina.com;expiress=Tuesday,01-jan-09 00:00:01 GMT
这样的Header指示浏览器添加一个条目到Cookie文件中。浏览器添加了一个名为UserName且值为BIll Gates的Cookie。

在服务器创建了Cookie后,浏览器在对Web站点访问发出的每个请求中返回Cookie。浏览器在头部中发送Cookie:
Cookie:UserName:Bill+Gates


创建和读取会话Cookie:
    通过Response和Request的Cookies属性来创建和读取会话Cookie。

    Exp:创建一个名为MyItem的会话Cookie:
dim objItem as New HttpCookie(“myItem“,"Test Create Cookie")  '//创建一个名为myItem的Cookie。
Reponse.Cookies.Add(objItem)  '//添加新的Cookie到Response的Cookies集合中。

    这个例子创建的是会话Cookies,被加载到浏览器的内存中。当浏览器关闭的时候,该Cookie就从内存中被清除。

    读取Cookie 可以访问Request对象的Cookies集合。
    Exp:读取上面创建的myItem
Response.Write(Request.Cookies("myItem").Value)

    Cookie只能包换字符串值。如果要在Cookie中保存整数值,那么就需要把这样的值转换成字符串。

循环遍历Request对象的Cookies集合
    
Dim strKey as string 
For each strKey in Request.Cookies
   Response.Write(
"<li>" & strKey &"=" &  Request.Cookies(strKey).Value)
Next

创建和读取持久性Cookie
持久性Cookie和会话Cookie之间仅有的差异在于附加的过期数据。
Dim objCookie as New HttpCookie("myCookie","Hello World")
objCookie.Expiress
=DateTime.Maxvalu '//#12/12/2009#
Response.Cookies.add(objCookie)

Cookie属性:

Domain---与Cookie关联的域名。如 sina.com、taobao.com

Expires---用于持久性Cookie的过期时间

HasKeys---一个表示Cookie是否一个Cookie字典的布尔值

Name---Cookie的名称

Path---与Cookie关联的路径。默认值为"/"

Secure---表示是否只能通过加密的连接来发送Cookie的值。默认值为False

Value---Cookie的值

Values---表示存储在Cookie字典中的所有键(key)和值(value)对的NameValueCollection


HasKeys属性可以检测一个Cookie是否为Cookie字典。Values属性可以从Cookie字典中读取Key和Value。

Exp:创建一个Cookie字典
dim objCookie as HttpCookie

objCookie
=new HttpCookie("preferences")
objCookie.Values(
"Color")="red"
objCookie.Values(
"fontface")="Arial"
objCookie.Values(
"fontsize")="4"
Response.Cookies.add(objCookie)

'//使用Haskeys属性检测一个Cookie是否为Cookie字典,并且利用Values属性来每个条目
if objCookie.HasKeys then
   
dim strItem as string 
   
for each strItem in objCookie.Values
       Response.Write(
"<li>" & strItem & "=" & objCookie.Values(strItem))
   
next
end if
posted @ 2008-07-17 14:38  年华倒影  阅读(192)  评论(0)    收藏  举报