session对象



Session 对象用于存储关于某个用户会话(session)的信息,或者修改相关的设置。存储在 session 对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。

Session 对象
当您正在操作一个应用程序时,您会启动它,然后做些改变,随后关闭它。这个过程很像一次对话(Session)。计算机知道你是谁。它也知道你在何时启动和关闭这个应用程序。但是在因特网上,问题出现了:web 服务器不知道你是谁,也不知道你做什么,这是由于 HTTP 地址无法留存状态(信息)。
ASP 通过为每个用户创一个唯一的 cookie 解决了这个问题。cookie 发送到服务器,它包含了可识别用户的信息。这个接口称作 Session 对象。
Session 对象用于存储关于某个用户会话(session)的信息,或者修改相关的设置。存储在 session 对象中的变量掌握着单一用户的信息,同时这些信息对于页面中的所有页面都是可用的。存储于 session 变量中的信息通常是 name、id 以及参数等。服务器会为每位新用户创建一个新的 Session 对象,并在 session 到期后撤销这个对象。
下面是 Session 对象的集合、属性、方法以及事件:
集合
集合 描述
Contents 包含所有通过脚本命令追加到 session 的条目。
StaticObjects 包含了所有使用 HTML 的 <object> 标签追加到 session 的对象。
属性
属性 描述
CodePage 规定显示动态内容时使用的字符集
LCID 设置或返回指定位置或者地区的一个整数。诸如日期、时间以及货币的内容会根据位置或者地区来显示。
SessionID 为每个用户返回一个唯一的 id。此 id 由服务器生成。
Timeout 设置或返回应用程序中的 session 对象的超时时间(分钟)。
方法
方法 描述
Abandon 撤销一个用户的 session。
Contents.Remove 从 Contents 集合删除一个项目。
Contents.RemoveAll() 从 Contents 集合删除全部项目。
事件
事件 描述
Session_OnEnd 当一个会话结束时此事件发生。
Session_OnStart 当一个会话开始时此事件发生。


1.设置并返回 LCID
本例演示 "LCID" 属性。此属性设置并返回一个指示位置或者地区的整数。类似于日期、时间以及货币等内容都要根据位置或者地区来显示。


<html>
<body>

<%  
response.write("<p>")
response.write("本页的默认 LCID 是:" & Session.LCID & "<br />")
response.write("上面的 LCID 的日期格式是:" & date() & "<br />")
response.write("上面的 LCID 的货币格式是:" & FormatCurrency(350))
response.write("</p>")

Session.LCID=1036

response.write("<p>")
response.write("现在 LCID 变更为:" & Session.LCID & "<br />")
response.write("上面的 LCID 的日期格式是:" & date() & "<br />")
response.write("上面的 LCID 的货币格式是:" & FormatCurrency(350))
response.write("</p>")

Session.LCID = 3079

response.write("<p>")
response.write("现在 LCID 变更为:" & Session.LCID & "<br />")
response.write("上面的 LCID 的日期格式是:" & date() & "<br />")
response.write("上面的 LCID 的货币格式是:" & FormatCurrency(350))
response.write("</p>")

Session.LCID = 2057

response.write("<p>")
response.write("现在 LCID 变更为:" & Session.LCID & "<br />")
response.write("上面的 LCID 的日期格式是:" & date() & "<br />")
response.write("上面的 LCID 的货币格式是:" & FormatCurrency(350))
response.write("</p>")
%>

</body>
</html>


2.返回 SessionID
本例演示 "SessionID" 属性。该属性为每位用户返回一个唯一的 id。这个 id 由服务器生成。

<html>
<body>

<%
Response.Write(Session.SessionID)
%>

</body>
</html>

3.session 的超时
本例演示 "Timeout" 属性。这个例子设置并返回 session 的超时时间(分钟)。


<html>
<body>

<%  
response.write("<p>")
response.write("默认 Timeout 是:" & Session.Timeout & " 分钟。")
response.write("</p>")

Session.Timeout=30

response.write("<p>")
response.write("现在的 Timeout 是 " & Session.Timeout & " 分钟。")
response.write("</p>")
%>

</body>
</html>



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
%>


posted on 2012-03-15 11:15 青蛙學堂 阅读(642) 评论(1)  编辑 收藏 引用 所属分类: 軟件布袋HTMLVs2008

评论

# re: session对象 2012-03-19 16:48 传多个值

application全局变量,session是会话变量,比如说:(1)session:声明一个session变量。打开一个网站,session就存在了,更换页,只要是这个网站的页,session始终存在,当关闭这个网站的时候,session就结束了,这叫会话变量。。。(2)application:声明一个application变量。不关你前台有多少客户打开该网站的页,有多少客户关闭该网站的页,只要服务器端不关闭该网站,application始终存在。  回复  更多评论   

只有注册用户登录后才能发表评论。
<2020年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜