4.2、setValue方法
setValue方法保存value字符串以及与它关联的字符串名字。这种“名字-值”对很容易使人想起Dictionary对象。setValue方法要求在第一个参数中提供合法的会话标识符,它假定在自己被调用之前getSessionID方法已经执行,经过检验的合法会话标识符必然存在,因此它不再对传入的会话标识符进行合法性检验。
setValue方法按如下规则保存名字-值对:
如果与value值关联的name以前还没有保存过,则新的名字-值对加入到文本文件的末尾。
如果value字符串关联的name值以前已经保存过,则原来保存的值被新的value值替换。
setValue方法按照如下格式保存名字-值对,注意“名字”是大小写敏感的:
name-1 value-1name-2 value-2name-3 value-3...name-n value-n
setValue方法的声明如下:
|
setValue方法首先寻找与当前会话对应的文本文件。如果不能找到文本文件,则setValue方法不做任何事情直接返回。如果找到了会话文本文件,setValue方法读取文本文件的各个行,然后比较读入的行与name:如果读入的文本行开头与name一样,则说明该名字已经保存,setValue方法将替换该行后面的值;如果name不能与读入的文本行匹配,则这行文本被直接复制到一个临时文件。
这部分功能的实现代码如下:
|
原来文本文件中的所有行复制到临时文件之后,setValue方法删除原来的文本文件,然后把临时文件改成会话文本文件的名字:
|
4.3、getValue方法
getValue方法用于提取原来保存在伪会话中的数据。正如setValue方法,getValue方法也要求传入一个合法的会话标识符,而且getValue方法不再对传入的会话标识符进行合法性检查。getValue方法的第二个参数是待提取数据的name,返回值是与指定name关联的value。
getValue方法的声明如下:
|
getValue方法的基本执行过程如下:首先找到会话文本文件,然后按行读入直至找到与name匹配的文本行;找到匹配的文本行之后,getValue方法返回该行保存的value;如果不能找到,getValue方法返回null。
4.4、deleteAllInvalidSessions方法
deleteAllInvalidSessions方法删除那些与已经过期的会话关联的文本文件。由于调用getSessionID方法时过期的会话文本文件会被删除,deleteAllInvalidSessions方法并不是关键的方法。什么时候调用这个方法由应用自己决定。例如,我们可以编写一个专用的后台程序,由这个程序每天一次清除所有过期的文本文件。最简单的办法是在JSP文件末尾调用deleteAllInvalidSessions方法,但如果网站比较繁忙,重复地调用deleteAllInvalidSessions方法将降低整个网站的响应能力。一种明智的做法是:编写一个在访问量较少的时候自动进行清理的后台程序。
deleteAllInvalidSessions方法的声明如下:
|
它首先把所有会话文本文件的名字读入files字符串数组:
|
deleteAllInvalidSessions方法比较文本文件的最后修改时间(加上超时时间)和系统当前时间,确定会话是否过期。long类型的变量now用于保存系统的当前时间。
|
接下来,deleteAllInvalidSessions方法通过循环访问files数组,依次检查每个文件的lastModified属性。所有与过期会话关联的文件都将被删除:
|
五、应用实例
编译好PseudoSessionBean这个JavaBean之后,我们就可以利用伪会话管理机制来管理Web应用的会话状态信息了。由于不必再使用服务器的会话管理机制,我们可以在page指令中把session属性设置为false关闭默认的JSP/Servlet会话管理功能。
|
相关专题
- Jsp完全攻略专题 (1574篇文章)
- JSP教程专栏 (1574篇文章)
- Jsp与Servlet (151篇文章)
- 用JFreeChart增强JSP报表的用户体验 (81次浏览)
- 解析Servlet/JSP会话跟踪机制 (34次浏览)
- 自行开发JSP HTTP服务器的绝对秘籍(二) (19次浏览)
- 整理近几天处理JSP页面中遇到的几个问题 (19次浏览)
- 我们还需要JSP吗? (18次浏览)
- 两级下拉框的JSP简单实现 (17次浏览)
- 在Apache中整合JSP和PHP (14次浏览)
- 深入讲解提升JSP应用程序的七个方法 (11次浏览)
- JSP/Servlet/JSF中对标签库的深入研究 (10次浏览)
- JSP/Servlet:Servlet/JSP会话跟踪机制 (7次浏览)



