Menu
×
   ❮     
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 会话 对象


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


会话对象

当您在计算机上使用应用程序时,您会打开它,进行一些更改,然后关闭它。这很像一个会话。计算机知道你是谁。它知道您何时打开应用程序以及何时关闭应用程序。但是,在互联网上存在一个问题:Web 服务器不知道您是谁以及您在做什么,因为 HTTP 地址不维护状态。

ASP 通过为每个用户创建一个唯一的 cookie 来解决此问题。Cookie 被发送到用户的计算机,并且包含用于识别用户的用户信息。此接口称为会话对象。

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

存储在会话对象中的变量保存有关单个用户的信息,并且可供一个应用程序中的所有页面使用。存储在会话变量中的常见信息包括姓名、ID 和首选项。服务器为每个新用户创建一个新的会话对象,并在会话过期时销毁会话对象。


会话何时开始?

会话在以下情况下开始

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

    会话何时结束?

    如果用户在指定的时间段内未在应用程序中请求或刷新页面,则会话将结束。默认情况下,为 20 分钟。

    如果要设置比默认值更短或更长的时间限制,请使用 Timeout 属性。

    以下示例将时间限制设置为 5 分钟

    <%
    Session.Timeout=5
    %>

    使用 Abandon 方法立即结束会话

    <%
    Session.Abandon
    %>

    注意: 会话的主要问题是它们何时应该结束。我们不知道用户的最后一个请求是否是最终请求。因此,我们不知道应该将会话保持“活动”多久。等待一个空闲会话的时间过长会导致服务器上的资源占用,但是如果会话过早删除,则用户必须重新开始,因为服务器已经删除了所有信息。找到合适的时间限制可能很困难!

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



    存储和检索会话变量

    会话对象最重要的功能是您可以在其中存储变量。

    以下示例将会话变量 username 设置为“唐老鸭”,将会话变量 age 设置为“50”。

    <%
    Session("username")="唐老鸭"
    Session("age")=50
    %>

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

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

    上面的行返回:“欢迎唐老鸭”。

    您也可以在会话对象中存储用户首选项,然后访问该首选项以选择要返回给用户的页面。

    以下示例指定了如果用户具有较低的屏幕分辨率,则使用页面的纯文本版本

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

    删除会话变量

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

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

    以下示例删除会话变量“sale”,如果会话变量“age”的值小于 18

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

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

    <%
    Session.Contents.RemoveAll()
    %>

    循环遍历 Contents 集合

    Contents 集合包含所有会话变量。您可以循环遍历 Contents 集合,以查看其中存储的内容

    <%
    Session("username")="唐老鸭"
    Session("age")=50

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

    结果

    username
    age

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

    <%
    dim i
    dim j
    j=Session.Contents.Count
    Response.Write("会话变量: " & j)
    For i=1 to j
      Response.Write(Session.Contents(i) & "<br>")
    Next
    %>

    结果

    会话变量: 2
    唐老鸭
    50

    循环遍历 StaticObjects 集合

    您可以循环遍历 StaticObjects 集合,以查看存储在会话对象中的所有对象的值

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

    ×

    Contact Sales

    If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
    [email protected]

    Report Error

    If you want to report an error, or if you want to make a suggestion, send us an e-mail:
    [email protected]

    W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

    Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.