菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

ASP Session 对象


Session 对象用于存储用户信息或更改用户会话的设置。


Session 对象

当你在电脑上使用一个应用程序时,你会打开它,进行一些更改,然后关闭它。这就像一个 Session。电脑知道你是谁。它知道你何时打开应用程序以及何时关闭它。然而,在互联网上有一个问题:Web 服务器不知道你是谁,也不知道你在做什么,因为 HTTP 地址不维护状态。

ASP 通过为每个用户创建一个唯一的 Cookie 来解决这个问题。Cookie 被发送到用户的计算机,它包含识别用户的信息。这个接口被称为 Session 对象。

Session 对象存储用户信息或更改用户会话的设置。

存储在 Session 对象中的变量保存有关单个用户信息,并且在同一个应用程序中的所有页面都可以访问。通常存储在会话变量中的信息包括姓名、ID 和偏好。服务器为每个新用户创建一个新的 Session 对象,并在会话过期时销毁该 Session 对象。


Session 何时开始?

当以下情况发生时,会话开始:

  • 新用户请求一个 ASP 文件,并且 Global.asa 文件包含一个 Session_OnStart 过程。
  • 将值存储在 Session 变量中。
  • 用户请求一个 ASP 文件,并且 Global.asa 文件使用 <object> 标签来实例化一个具有会话范围的对象。

Session 何时结束?

如果用户在应用程序中没有请求或刷新页面达到指定时间(默认为 20 分钟),则会话结束。

如果你想设置一个比默认值更短或更长的超时间隔,请使用 Timeout 属性。

下面的示例将超时间隔设置为 5 分钟。

<%
Session.Timeout=5
%>

使用 Abandon 方法可以立即结束会话。

<%
Session.Abandon
%>

注意: 会话的主要问题在于何时应该结束。我们不知道用户的最后一次请求是否是最终请求。因此,我们不知道应该将会话“保持活动”多久。等待一个空闲会话过长时间会占用服务器资源,但如果会话过早删除,用户将不得不重新开始,因为服务器已删除所有信息。找到正确的超时间隔可能很困难!

提示: 只在会话变量中存储少量数据!



存储和检索 Session 变量

Session 对象最重要的特点是你可以将变量存储在其中。

下面的示例将 Session 变量 username 设置为“Donald Duck”,并将 Session 变量 age 设置为“50”。

<%
Session("username")="Donald Duck"
Session("age")=50
%>

当值存储在会话变量中时,可以从 ASP 应用程序中的任何页面访问它。

欢迎 <%Response.Write(Session("username"))%>

上面的行返回:“Welcome Donald Duck”。

你也可以将用户偏好存储在 Session 对象中,然后访问该偏好来选择要返回给用户的页面。

如果用户屏幕分辨率较低,下面的示例将指定页面的纯文本版本。

<%If Session("screenres")="low" Then%>
  这是页面的文本版本
<%Else%>
  这是页面的多媒体版本
<%End If%>

移除 Session 变量

Contents 集合包含所有会话变量。

可以使用 Remove 方法移除会话变量。

如果会话变量 "age" 的值小于 18,下面的示例将移除会话变量 "sale"。

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

要移除会话中的所有变量,请使用 RemoveAll 方法。

<%
Session.Contents.RemoveAll()
%>

循环遍历 Contents 集合

Contents 集合包含所有会话变量。你可以循环遍历 Contents 集合,查看其中存储了什么。

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
  Response.Write(i & "<br>")
下一步
%>

结果

username
age

如果你不知道 Contents 集合中的项目数量,可以使用 Count 属性。

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
下一步
%>

结果

Session 变量: 2
Donald Duck
50

循环遍历 StaticObjects 集合

你可以循环遍历 StaticObjects 集合,查看所有存储在 Session 对象中的对象的值。

<%
dim i
For Each i in Session.StaticObjects
  Response.Write(i & "<br>")
下一步
%>

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持