『壹』 怎么判断用户非法退出,比如用户关闭了浏览器,我怎么能够知道用户退出了
有个监听类,可抄以监控袭session失效,比如超过设置的时间没有操作,关闭浏览器后
因为http协议是无状态的,客户端关浏览器 服务器端是不知道的。
javax.servlet.http.HttpSessionBindingListener;
写一个类继承这个接口,这个接口提供2个抽象方法,它会再session创建和失效的时候自动运行
valueBound()
valueUnbound()
在这个类里面可以操作session 和application
『贰』 java:session中的invalidate()的作用是什么呢求解
Java中Session的invalidate方法的作用是使当前的Session对象失效。
详细解释如下:
一、Session的invalidate方法概述
在Java的Web应用中,Session是一个服务器为每个客户端用户创建的会话,用于存储用户的临时数据。当调用Session的invalidate方法时,会立即终止当前会话并删除与之相关的所有数据。简单来说,就是结束当前的会话并清除相关的会话信息。
二、详细解析Session的invalidate方法的作用
1. 结束会话:调用invalidate方法后,当前用户的会话立即结束。这意味着用户需要再次进行身份验证才能访问服务器资源。
2. 资源释放:由于会话结束,与之关联的所有数据都会被删除。这包括存储在会话中的属性、用户信息等。此外,服务器也会释放与当前会话相关的资源,如内存等。
3. 防止数据泄露:在某些情况下,例如用户活动超时或检测到异常行为时,调用invalidate方法可以确保敏感数据不会被长时间保留在会话中,从而增强系统的安全性。
三、使用场景
1. 当用户长时间未进行任何操作时,会话可能会超时,此时服务器会自动调用invalidate方法来结束会话。
2. 当检测到用户的会话可能包含非法或异常行为时,系统可能会主动调用invalidate方法来终止会话以确保系统的安全。
四、注意事项
调用invalidate方法后,与该会话相关的所有对象都会失效,因此要确保在调用此方法之前完成与该会话相关的所有操作。此外,此方法可能会引发一些事件,因此在调用此方法时要谨慎处理这些事件。
总结来说,Java中的Session的invalidate方法用于终止当前会话并删除与之相关的所有数据,确保系统的安全和资源的合理使用。
『叁』 java session在什么时候使用不了
一般情况下,session都是存储在内存里,当服务器进程被停止或者重启的时候,内存里的session也会被清空,如果设置了session的持久化特性,服务器就会把session保存到硬盘上,当服务器进程重新启动或这些信息将能够被再次使用。
1、session在何时被创建
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 <%@page session="false"%>关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。
2、session何时被删除
综合前面的讨论,session在下列情况下被删除a.程序调用HttpSession.invalidate();或b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置;或c.服务器进程被停止(非持久session)
3、如何做到在浏览器关闭时删除session
严格的讲,做不到这一点。可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session。但是对于浏览器崩溃或者强行杀死进程这些非常规手段仍然无能为力。
4、有个HttpSessionListener是怎么回事
你可以创建这样的listener去监控session的创建和销毁事件,使得在发生这样的事件时你可以做一些相应的工作。注意是session的创建和销毁动作触发listener,而不是相反。类似的与HttpSession有关的listener还有HttpSessionBindingListener,HttpSessionActivationListener和HttpSessionAttributeListener。