Session 工具
当您在打算机上操作某个运用程序时,您打开它,做些变动,然后关闭它。这很像一次对话(Session)。打算机知道您是谁。它清楚您在何时打开和关闭运用程序。然而,在因特网上问题涌现了:由于 HTTP 地址无法保持状态,Web 做事器并不知道您是谁以及您做了什么。
ASP 通过为每个用户创建一个唯一的 cookie 来办理这个问题。cookie 被传送至用户的打算机上,它含有可识别用户的信息。这种接口被称作 Session 工具。
Session 工具用于存储关于用户会话(session)的信息,或者变动用户会话(session)的设置。
存储于 Session 工具中的变量存储单一用户的信息,并且对付运用程序中的所有页面都是可用的。存储于 session 变量中的公共信息常日是 name、id 和参数。做事器会为每个新的用户创建一个新的 Session,并在 session 失落效时撤销掉这个 Session 工具。
Session 何时开始?
Session 开始于:
某个新用户要求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序
某个值存储在 Session 变量中
某个用户要求了一个 ASP 文件,并且 Global.asa 利用 <object> 标签通过 session 的 scope 来实例化某个工具
Session 何时结束?
如果用户没有在规定的韶光内在运用程序中要求或者刷新页面,session 就会结束。默认值为 20 分钟。
如果您想要将超时的韶光间隔设置为比默认值更短或更长,可以利用 Timeout 属性。
下面的实例设置了一个 5 分钟的超时时间间隔:
<%
Session.Timeout=5
%>
要立即结束 session,请利用 Abandon 方法:
<%
Session.Abandon
%>
注释:利用 session 时紧张的问题是它们该在何时结束。我们不会知道用户最近的要求是否是末了的要求。因此我们不清楚该让 session \"大众存活\"大众多久。为某个空闲的 session 等待太久会耗尽做事器的资源。然而如果 session 被过早地删除,用户就不得不一遍又一各处重新开始,这是由于做事器已经删除了所有的信息。探求得当的超韶光隔韶光是很困难的!
提示:在 session 变量中仅存储少量的数据!
存储和取回 Session 变量
Session 工具最大的优点是可在个中存储变量,以供后续的网页读取,其运用范围是很广的。
下面的实例把 \"大众Donald Duck\公众 赋值给名为 username 的 Session 变量,并把 \"大众50\"大众 赋值给名为 age 的 Session 变量:
<%
Session(\公众username\"大众)=\"大众Donald Duck\"大众
Session(\"大众age\"大众)=50
%>
当值被存储在 session 变量中,它就能被 ASP 运用程序中的任何页面利用:
Welcome <%Response.Write(Session(\公众username\公众))%>
上面这行代码返回的结果是: \公众Welcome Donald Duck\"大众。
您也可以在 Session 工具中存储用户参数,然后通过访问这些参数来决定向用户返回什么页面。
下面的实例规定,如果用户利用低显示器分辨率,则返回纯文本版本的页面:
<%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 中的所有变量,请利用 RemoveAll 方法:
<%
Session.Contents.RemoveAll()
%>
遍历 Contents 凑集
Contents 凑集包含所有的 session 变量。您可以通过遍历 Contents 凑集,来查看个中存储的变量:
<%
Session(\公众username\"大众)=\"大众Donald Duck\"大众
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(\"大众Session variables: \"大众 & j)
For i=1 to j
Response.Write(Session.Contents(i) & \"大众<br>\"大众)
Next
%>
结果:
Session variables: 2
Donald Duck
50
遍历 StaticObjects 凑集
您可以通过遍历 StaticObjects 凑集,来查看存储在 Session 工具中的所有工具的值:
<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & \"大众<br>\公众)
Next
%>