社区
Java EE
帖子详情
关于服务器端知道session是否存在的问题
csfengping
2009-09-10 05:44:15
当浏览器端,关机,掉线,或者关闭所有页面时,服务器端怎么第一时间知道当前用户已经离线
...全文
508
26
打赏
收藏
关于服务器端知道session是否存在的问题
当浏览器端,关机,掉线,或者关闭所有页面时,服务器端怎么第一时间知道当前用户已经离线
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
csfengping
2009-09-17
打赏
举报
回复
-------------------web.xml配置:
<filter>
<filter-name>mainfilter</filter-name>
<filter-class>com.chance.MainFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>mainfilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
------------------MainFilter.java--------------------------
package com.chance;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.*;
import java.io.IOException;
public class MainFilter implements Filter{
public void init(FilterConfig filterConfig)throws ServletException{
//
}
public void doFilter(ServletRequest request,
ServletResponse response,FilterChain chain)throws ServletException, IOException{
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
boolean isValid=true;
///////check attribute
isValid=req.getSession().getAttribute("name")==null;
if(isValid){
req.getSession().getServletContext()
.getRequestDispatcher("/login.jsp").forward(req, res);
}else
chain.doFilter(request,response);
}
public void destroy(){}
}
owen_008
2009-09-12
打赏
举报
回复
建议看看http协议~~呵呵
DocotorNo1
2009-09-11
打赏
举报
回复
[Quote=引用 3 楼 windforcecn 的回复:]
这是http协议
关闭浏览器即判断session销毁
[/Quote]
看看HTTP协议你就明白啦
qq774097676
2009-09-11
打赏
举报
回复
学习一下
DJBCAINIAO
2009-09-11
打赏
举报
回复
你可以有用户下线时或者关闭浏览器时给你的服务器一个信息这样就可以控制啦,我们公司以前项目有这样做过,代码呢我找不到啦
logon29
2009-09-11
打赏
举报
回复
关闭浏览器后,服务器端的session并不会马上清除的,本地也会在cookies保留session信息(如果cookie没有设置关闭浏览器就失效的话),服务器端需要等到session失效后才会清除(session失效时长在web.xml中可配置)。
不清楚服务器端有没有可监听访客是否关闭浏览器到方法,不过可以考虑一下这个方法:
在页面上嵌入一个iframe页面,该页面用js控制没间隔1s(时间间隔自己按需设置)向服务端发起一次请求,如果服务端在1min内一直 没收到这个请求的话,可视为用户已经关闭浏览器。
如果用spring框架的话,ScheduledTimerTask刚好可以实现这个需求。否则自己写监听器。
youdandan
2009-09-11
打赏
举报
回复
[Quote=引用 7 楼 angel6709 的回复:]
监听可以,但需要时刻监视session的状态。
如果人口不是很多就直接放服务器的对象列表里吧
[/Quote]
有道理
幫頂
andyan_2008
2009-09-11
打赏
举报
回复
通过session判断
曾三神
2009-09-11
打赏
举报
回复
session是服务器给你创建的,并把session的id存在了客户端的cookie中
当你再次打开浏览器的时候,如果cookie中的sessionId对应的服务器上的session还存在,没有被服务器销毁的话。则默认你还在这次的会话中。
aaby167
2009-09-11
打赏
举报
回复
基于web的聊天室原理就是这样
aaby167
2009-09-11
打赏
举报
回复
只能是客户端不断的请求
服务器才知道你还活着没
sunxing007
2009-09-11
打赏
举报
回复
你要搞清楚http是请求-响应 模式,一次请求-响应完毕之后,连接就断开了。除非再次请求,否则服务器是无法判断用户是否关闭了,是否掉线了等等。服务器是无法主动和浏览器建立连接的。所以除非用户主动注销,或者是session timeout, 没有其他办法,不要异想天开服务器能够知道用户什么时候关闭浏览器。而且作为http服务器,他没有必要随时知道用户的状态。这是由他的功能地位决定的。
guodong66
2009-09-11
打赏
举报
回复
http协议是无状态的链接,这种需求不可能得。
另15楼的回答没办法实现,这样对服务器的压力太大,真实项目不可能使用。
coolbamboo2008
2009-09-10
打赏
举报
回复
学习
gesanri
2009-09-10
打赏
举报
回复
看看这个
http://topic.csdn.net/t/20050225/08/3804877.html
铁匠梁
2009-09-10
打赏
举报
回复
session不是有个超时时间吗?
意味着用户如果在这段时间内不作为,就会自动删除该会话。
woming66
2009-09-10
打赏
举报
回复
并不会立即消失除对应服务器端的session, 有个...BoundListener类(不总用名字忘记了),可以和一个session对应的状态绑定!
rookie001
2009-09-10
打赏
举报
回复
这应该有现成监听器或适配器,不用自己写吧,查查API文档就行了
liangwansheng
2009-09-10
打赏
举报
回复
我的想法是如里这个人下线了,就弹出一个提示,否则就不弹。
angel6709
2009-09-10
打赏
举报
回复
监听可以,但需要时刻监视session的状态。
如果人口不是很多就直接放服务器的对象列表里吧
加载更多回复(6)
高性能Web服务器Nginx实战(反向代理+负载均衡+
Session
共享)
课程目标你将对Web高并发有个更高层次的了解,通过Nginx快速搭建Web集群,并解决
Session
共享课程简介Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,是一个高性能的HTTP和反向代理服务器,同时也是一个代理服务器。通过本次课程学习,同学们能掌握到Nginx的安装(基于Linux), 配置,反向代理、正向代理、负载均衡及防盗链与防DDOS攻击等,同时基于Spring Boot讲解在Web集群环境中,如何解决
Session
共享
问题
。
19.
服务器端
会话技术
Session
当访问//set
Session
时,由于是第一次访问...(1)
session
用于存储一次会话的多次请求的数据,Cookie存在
服务器端
。先在浏览器访问/set
Session
,再访问/get/
Session
。,将数据保存在
服务器端
的对象中,Http
Session
。...
服务器端
Session
、客户端
Session
和Cookie的区别
那么就存在一个跨站点的
session
同步的
问题
,跨站点的登录可以使用单点登录的(SSO)的解决方案,但是不管什么解决方案,跨站点的
session
共享任然是逃避不了的
问题
。因为
session
是与用户相关的,在用户之前访问的每一...
cookie文件是存放在
服务器端
,下面对比
session
和cookie.cookie保存在客户端,
session
保存在
服务器端
,使用我用
session
比较多一些...
1、cookie保存在客户端,
session
保存在
服务器端
的文件系统/数据库/memcache等。2、
session
因为保存有
服务器端
,安全性无疑更高一些。3、cookie通过网络在客户端与
服务器端
传输,会占用一些带宽;而
session
保存在...
session
(是
服务器端
共享数据)
在一次会话的多次请求之间共享数据,将数据保存在
服务器端
session
对象中。 2.操作 1.获取
session
对象 request.get
Session
();====>get
Session
(true);直接获取
session
,如果
session
不存在,就创建一个 request....
Java EE
67,514
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章