关于 servlet 的session销毁的问题

我有个session,当我关闭浏览器的时候,用监听器为什么没有监听到session的销毁,但是当我在程序中明确销毁session的时候,却可以监听到session的销毁?... 我有个session,当我关闭浏览器的时候,用监听器为什么没有监听到session的销毁,但是当我在程序中明确销毁session的时候,却可以监听到session的销毁?
监听器public class OnlineUserListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {
}

public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();

// 取得登录的用户名
String username = (String) session.getAttribute("username");

// 从在线列表中删除用户名
List onlineUserList = (List) application.getAttribute("onlineUserList");
onlineUserList.remove(username);

System.out.println(username + "退出。");
}
代码销毁的session可以监听到:
public class LogoutServlet extends HttpServlet {

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
// 销毁session
request.getSession().invalidate();
// 成功
response.sendRedirect("index.jsp");
}

}
展开
 我来答
lj_april
2011-05-06
知道答主
回答量:20
采纳率:0%
帮助的人:16.7万
展开全部
session与浏览器关不关是没关系的。HttpSession API 是构建在cookie或URL重写上面的。session的信息存储并不是一关闭浏览器就失效了,你可以显式的销毁地,也可以由服务器超过时间销毁。服务器具有默认时间,你也可以重新设定他的session失效时间,在servlet里setMaxInactiveInterval方法设定;或在web-xml里面透过设定
<session-config>
<session-timeout>(分钟数)</session-timeout>
</session-config>
当然你也可以设0或负数(不会失效)。
追问
那关闭浏览器session不是摧毁了吗?怎么会监听不到呢?
追答
会话跟踪(session-tracking)基于存储在浏览器内存中(非磁盘)的cookie。因此退出浏览器会造成会话中断:客户程序将不能再访问会话。但问题是服务器不知浏览器已经关闭,因此服务器需要将会话维护在内存中,直到它处于非活动时间超过最大时间间隔。
brightming2
2011-05-08
知道答主
回答量:22
采纳率:0%
帮助的人:24.4万
展开全部
其实上面说的很好:session与浏览器关不关是没关系的。session是保存在服务器端的,只是会把sessionId通过会话cookie或重写url的方式发送给浏览器。浏览器关闭了,只是浏览器丢失了sessionId而已。在服务器端,session还在,因为http协议是无状态的,浏览器不会把自己关闭的事件通知服务器,那服务器只有等session超时后才会销毁session,并通知监听者。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
机碧春0q
2011-05-01
知道答主
回答量:3
采纳率:0%
帮助的人:2.9万
展开全部
因为session是寸在服务端的~距上一次回话结束后30分钟(默认)没有新会话。Session会自动销毁!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式