ASP2——Cookies、Session

本文介绍了ASP.NET中如何使用Cookies和Session来管理用户状态。Cookies用于在客户端存储用户信息,如创建、设置失效时间和读取值。而Session则在服务器端保存用户数据,提供了会话持久化的功能,包括开始、结束Session的方法以及如何存储、移除Session变量。

Cookies

cookie 常用用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 ASP,您能够创建并取回 cookie 的值。
“Response.Cookies” 命令用于创建 cookie。
Response.Cookies 命令必须出现在 标签之前。

在下面的实例中,我们将创建一个名为 “firstname” 的 cookie,并将其赋值为 “Alex”:<%Response.Cookies("firstname")="Alex"%>
设置失效时间:response.cookies("NumVisits").Expires=date+365
取回 cookie 的值:Request.Cookies
在下面的实例中,我们取回了名为 “firstname” 的 cookie 的值,并把值显示到了页面上:

<%
fname=Request.Cookies("firstname")
response.write("Firstname=" & fname)
%>

如果一个 cookie 包含多个值的集合,我们就可以说 cookie 带有键(Keys)。
通过HasKeys 属性检查 cookie 是否带有键

 <%
Response.Cookies("user")("firstname")="John"
Response.Cookies("user")("lastname")="Smith"
Response.Cookies("user")("country")="Norway"
Response.Cookies("user")("age")="25"
%>`在这里插入代码片`

<!DOCTYPE html>
<html>
<body>

<%
dim x,y
for each x in Request.Cookies
response.write("<p>")
if Request.Cookies(x).HasKeys then
for each y in Request.Cookies(x)
response.write(x & ":" & y & "=" & Request.Cookies(x)(y))
response.write("<br>")
next
else
Response.Write(x & "=" & Request.Cookies(x) & "<br>")
end if
response.write "</p>"
next
%>

</body>
</html>

输出:

firstname=Alex

user:firstname=John user:lastname=Smith user:country=Norway
user:age=25

Session

  • Session 对象

当您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

ASP 通过为每个用户创建一个唯一的 cookie 来解决这个问题。cookie 被传送至用户的计算机上,它含有可识别用户的信息。这种接口被称作 Session 对象。

Session 对象用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。

存储于 Session 对象中的变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 变量中的公共信息通常是 name、id 和参数。服务器会为每个新的用户创建一个新的 Session,并在 session 失效时撤销掉这个 Session 对象。

Session 开始于:

  • 某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序
  • 某个值存储在Session 变量中
  • 某个用户请求了一个 ASP 文件,并且 Global.asa 使用 标签通过 session 的 scope 来实例化某个对象

Session 何时结束?

如果用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。

如果您想要将超时的时间间隔设置为比默认值更短或更长,可以使用 Timeout 属性。
设置一个 5 分钟的超时时间间隔:<%Session.Timeout=5%>
立即结束 session,使用 Abandon 方法:<%Session.Abandon%>

提示:使用 session 时主要的问题是它们该在何时结束。我们不会知道用户最近的请求是否是最后的请求。因此我们不清楚该让 session "存活"多久。为某个空闲的 session 等待太久会耗尽服务器的资源。然而如果 session 被过早地删除,用户就不得不一遍又一遍地重新开始,这是因为服务器已经删除了所有的信息。寻找合适的超时间隔时间是很困难的!
提示:在 session 变量中仅存储少量的数据!

  • 存储变量:
<% Session("username")="Donald Duck" Session("age")=50 %>
 Welcome <%Response.Write(Session("username"))%>
  • 存储用户参数:
<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>
  • 移除 Session 变量

Contents 集合包含所有的 session 变量。
可通过 Remove 方法来移除 session 变量。

在下面的实例中,如果 session 变量 “age” 的值小于 18,则移除 session 变量 “sale”:

<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>

移除所有<% Session.Contents.RemoveAll() %>

  • 遍历 Contents 集合
 <%
Session("username")="Donald Duck"
Session("age")=50
dim i
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>

使用 Count 属性獲得 Contents 集合中的项目数量:j=Session.Contents.Count

  • 遍历 StaticObjects 集合
    通过遍历 StaticObjects 集合,来查看存储在 Session 对象中的所有对象的值:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br/>")
Next
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值