目录
- Session 对象简介
- Session 变量的存储与读取
- Session 变量的生命周期
- Session.Abandon 方法
- Session.Timeout 属性
- SessionID 属性
- Session.Contents 集合
- Session 事件(Global.asa 文件)
- 完整示例代码
- 参考资料
- 出站链接
1. Session 对象简介
Session
对象用于存储用户会话期间的变量,每个用户的 Session
是独立的,不同用户之间不会共享。
📌 特点:
- 变量仅在当前用户的会话期间有效
Session
变量适用于存储用户信息、权限状态等SessionID
唯一标识每个用户的会话- 默认超时时间为 20 分钟,可自定义
2. Session 变量的存储与读取
存储 Session 变量
<%
Session("Username") = "zhangsan"
Session("Role") = "Admin"
%>
读取 Session 变量
<%
Response.Write "用户名:" & Session("Username") & "<br>"
Response.Write "角色:" & Session("Role")
%>
检查 Session 变量是否存在
<%
If Session("Username") <> "" Then
Response.Write "欢迎回来," & Session("Username")
Else
Response.Write "请先登录"
End If
%>
3. Session 变量的生命周期
📌 Session 变量的生命周期:
- 用户首次访问网站时,
Session
启动 - 在
Session.Timeout
时间内不活动,则会话结束 - 用户关闭浏览器,
Session
可能终止(取决于服务器设置) - 调用
Session.Abandon
可手动结束Session
4. Session.Abandon 方法
📌 Session.Abandon
方法用于立即销毁当前会话并释放所有 Session
变量。
示例:用户注销
<%
Session.Abandon
Response.Redirect "login.asp"
%>
📌 注意:
Session.Abandon
只能销毁当前用户的Session
,不会影响其他用户- 重新访问网站时,将创建一个新的
SessionID
5. Session.Timeout 属性
📌 Session.Timeout
用于设置 Session
变量的超时时间(单位:分钟),默认值为 20 分钟。
修改 Session 超时时间
<%
Session.Timeout = 30 ' 设置超时 30 分钟
%>
📌 注意:
- 超时时间为
Session
变量的非活动时间(用户无请求) - 超时后,
Session
变量会自动销毁
6. SessionID 属性
📌 SessionID
是服务器分配给每个用户会话的唯一标识符。
获取当前用户的 SessionID
<%
Response.Write "当前 SessionID:" & Session.SessionID
%>
📌 注意:
SessionID
在整个会话期间保持不变- 如果用户关闭浏览器并重新访问,
SessionID
可能会更改
7. Session.Contents 集合
📌 Contents
集合存储当前 Session
的所有变量,可以遍历或删除。
遍历所有 Session 变量
<%
Dim key
For Each key In Session.Contents
Response.Write key & " = " & Session.Contents(key) & "<br>"
Next
%>
删除特定的 Session 变量
<%
Session.Contents.Remove("Username")
%>
清除所有 Session 变量
<%
Session.Contents.RemoveAll
%>
8. Session 事件(Global.asa 文件)
📌 Global.asa
文件可以定义 Session
相关的事件,如 Session_OnStart
和 Session_OnEnd
。
示例:Global.asa 文件
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
Session("VisitCount") = 1
End Sub
Sub Session_OnEnd
Session("VisitCount") = Null
End Sub
</SCRIPT>
📌 事件说明:
Session_OnStart
:用户第一次访问网站时触发Session_OnEnd
:Session
终止时触发(超时或Session.Abandon
)
9. 完整示例代码
<%
' 设置 Session 变量
Session("Username") = "zhangsan"
Session("Role") = "Admin"
Session.Timeout = 30
' 显示 Session 信息
Response.Write "<h2>ASP Session 对象示例</h2>"
Response.Write "用户名:" & Session("Username") & "<br>"
Response.Write "角色:" & Session("Role") & "<br>"
Response.Write "Session 超时时间:" & Session.Timeout & " 分钟<br>"
Response.Write "SessionID:" & Session.SessionID & "<br>"
' 遍历所有 Session 变量
Response.Write "<h3>所有 Session 变量:</h3>"
Dim key
For Each key In Session.Contents
Response.Write key & " = " & Session.Contents(key) & "<br>"
Next
%>
10. 参考资料
- Microsoft Docs – ASP Session 对象
- W3Schools – ASP Session Methods
- IIS 官方文档 – ASP 编程指南
11. 出站链接
掌握 ASP Session 对象,你就能轻松管理用户状态、存储用户数据,并优化会话控制!🚀
发表回复