| 首页 >> 网络编程 >> JSP >> JSP技巧 >> 新闻正文 | [字体:大 中 小] [打印文档] |
| |
|
|
返回值是与指定name关联的value。 getValue方法的声明如下: public String getValue(String sessionId, String name) getValue方法的基本执行过程如下:首先找到会话文本文件,然后按行读入直至找到与name匹配的文本行;找到匹配的文本行之后,getValue方法返回该行保存的value;如果不能找到,getValue方法返回null。 4.4 deleteAllInvalidSessions方法 deleteAllInvalidSessions方法删除那些与已经过期的会话关联的文本文件。由于调用getSessionID方法时过期的会话文本文件会被删除,deleteAllInvalidSessions方法并不是关键的方法。什么时候调用这个方法由应用自己决定。例如,我们可以编写一个专用的后台程序,由这个程序每天一次清除所有过期的文本文件。最简单的办法是在JSP文件末尾调用deleteAllInvalidSessions方法,但如果网站比较繁忙,重复地调用deleteAllInvalidSessions方法将降低整个网站的响应能力。一种明智的做法是:编写一个在访问量较少的时候自动进行清理的后台程序。 deleteAllInvalidSessions方法的声明如下: public void deleteAllInvalidSessions() 它首先把所有会话文本文件的名字读入files字符串数组: File dir = new File(path); String[] files = dir.list(); deleteAllInvalidSessions方法比较文本文件的最后修改时间(加上超时时间)和系统当前时间,确定会话是否过期。long类型的变量now用于保存系统的当前时间。 long now = System.currentTimeMillis(); 接下来,deleteAllInvalidSessions方法通过循环访问files数组,依次检查每个文件的lastModified属性。所有与过期会话关联的文件都将被删除: for (int i=0; i<files.length; i++) { File f = new File(path + files[i]); if (f.lastModified() + timeOut > now) f.delete(); // 删除过期的会话文本文件} 五、应用实例 编译好PseudoSessionBean这个JavaBean之后,我们就可以利用伪会话管理机制来管理Web应用的会话状态信息了。由于不必再使用服务器的会话管理机制,我们可以在page指令中把session属性设置为false关闭默认的JSP/Servlet会话管理功能。 <%@ page session="false" %> 然后,我们用JSP的<jsp:useBean>标记告诉JSP容器程序要使用PseudoSessionBean: <jsp:useBean id="PseudoSessionId" scope="application" class="pseudosession.PseudoSessionBean" /> class="pseudosession.PseudoSessionBean" /><% String sessionId = PseudoSessionId.getSessionID(request);%><html><head><title>伪会话</title></head><body><h1>伪会话管理机制</h1><br /><% String userName = "bulbul"; PseudoSessionId.setValue(sessionId, "userName", userName);%><a href=secondPage.jsp?sessionId=<%=sessionId%>>点击此处</a><br /><form method="post" action=anotherPage.jsp?sessionId=<%=sessionId%>><br />输入数据:<input type="text" name="sample"><br /><input type="submit" name="Submit" value="Submit"></form></body></html><% PseudoSessionId.deleteAllInvalidSessions();%> class="pseudosession.PseudoSessionBean" /><% String sessionId = PseudoSessionId.getSessionID(request);%><html><head><title>第2个页面</title></head><body><% String userName = PseudoSessionId.getValue(sessionId, "userName"); out.println("用户名字是 " + userName);%></body></html> |
