📄 kj04-06-02.txt
字号:
Session对象也是用于记录信息的。但与Application对象不同的是,Session对象为某一用户私有。这意味着,在线的用户A不能访问同时在线的用户B的Seesion对象。
Session对象也有其生存期。在默认的情况下,如果浏览器在20分钟内没有再访问网站中的任何网页,则该网站为其建立的Session对象将自动释放。
在编程实践中,Session对象通常用来在不同的ASP.NET网页间传递信息。
4.6.2.1 Session对象的事件、重要属性和方法
1.Session对象的事件
当浏览者首次启动浏览器访问网站时,将触发Session对象的OnStart事件,而在特定的时间(默认为20分钟)内没有访问网页或者以规定的方法主动释放Session对象时,将触发Session对象的OnEnd事件。
在ASP.NET中,上述两个事件的处理程序应放置在名为Global.aspx中。该文件必须放在站点的主目录中。
在Session对象的OnStart事件的处理程序中,通常用Add方法来添加Session变量。
在Session对象的OnEnd事件的处理程序中,通常进行的操作是将Session变量的当前值保存到文本文件或数据库中。
2.Session对象的重要属性
Session对象的重要属性如下:
◎ IsNewSession:当浏览者首次启动浏览器浏览网页时,该属性返回值为True。而浏览者刷新网页或进入网站中的其他网页时,该属性返回值为False。
◎ SessionID:给出能唯一确定一个连接者的标识码。
◎ TimeOut:给出或设置Session对象的失效时间(单位为分钟)。在由TimeOut属性设置的时间内,若浏览者未访问网页,则Session对象将被自动释放。TimeOut属性的默认值为20分钟。
3.Session对象的重要方法
◎ Abandon():强制结束Session对象。调用此方法将触发Session对象的OnEnd事件。由于Session对象存在于服务器端内存中,如果使用了Session对象,且在线用户较多,则服务器的负担将便得比较沉重。为了减轻服务器的负担,应遵循两条原则,一是尽量少用Session对象;二是应及时释放不再使用的Session对象。
◎ Clear():释放Session对象中的所有非对象变量。
4.6.2.2 Session对象应用举例
1.Session.IsNewSession的应用
程序Prac04-20.aspx、Prac04-21.aspx所实现的计数器都存在着能被用户“灌水”的漏洞。即用户连续刷新网页的操作,可是计数器的值迅速增加。
可以利用Session对象的IsNewSession属性了解决这个问题。
2.在网页中提供当前在线用户信息
许多网页可以提供在线用户数量、各用户的某些个人信息等。这些功能可以用Session.SessionID来实现。因为Session.SessionID可以唯一标识每一个用户,因此,就可以通过编程,在Application对象中建立一个用户列表。对这个列表进行处理,就可以获得很多有趣、实用的功能。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -