获取超时的session(请求超时是)
用java想写个定时器,定时获得session,看session是否超时,超时让用户重新登录
可以将session存在缓存,像是这样
Map map= new HashMap();
map.put("session", httpSession);
map.put("sessionId", httpSession.getId());
sessionIds.add(map);
之后定时验证里面的session是否超时。如果超时,则kill掉sessionId符合的session
验证超时可以取session的启动时间和现在时间对比,超时就可以关掉。
估计你也是要限制登录人的登录时间吧。。
关于c#.net里正在操作时session超时的问题?
按你描述的要求来说,根本不需要任何配置,因为Session默认的过期时间就是20分钟……
如果想延长这个默认时间的话,如上位朋友所说设置
也可以参见MSDN相关章节。
-----------------------------------
Session 可选属性
timeout 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。默认值为 20。
示例
以下示例指定若干会话状态配置设置。
configuration
system.web
sessionState mode="InProc"
cookieless="true"
timeout="20"/
/sessionState
/system.web
/configuration
如果还解决不了你的问题,你可以贴相关代码
如何捕捉Session的超时机制问题 java
...
String SysUserName = (String)SessionUtils.getAttribute(request, "UserName");
if((SysUserName==null)||(SysUserName.equals("")))
{
%
jsp:forward page="sessiontimeout.jsp"/
%
}
...
以上例子是获取 SysUserName 的 session 如果为空,则说明超时了。
JSF怎样获取所有的session 并为其设置超时时间 (不仅仅是当前用户的session)
一般来说,当前用户的是不能看到其他用户的session的,你如果要操作其他用户的session就要做特殊处理,比如,在session新建的时候,保存在一个全部用户都可见的地方(servletContext之类)
session超时的设置
1.登录成功后,在session范围内放当前登录的用户。
2.写一个登录的Filter,判断session内是否放置了已登录用户。如果没有,就跳转到你想显示的页面。由于session超时后,会重置里面所有的内容,所以超时后,里面就不存在登录用户了。
3。设置filter的urlPattern为"/*",过滤所有的请求。只要点了按钮或者其他的给服务器发请求,就要验证。
session过期怎么恢复
如果用户未操作的「长时间」超过了服务器配置的session超时时间,并导致session失效,那么我们延长session的超时时间,让用户原来的「长时间」与超时时间相比,变得不「长」,就可以解决。
如果用户是长时间「未操作」导致session失效,那么我们想办法产生「操作」,让用户每隔一小段时间就「操作」一次,与服务器产生交互,那么session自然也不会失效。
一般情况下下,我们首先想到的是,通过改变服务器的配置,延长服务器的session超时时间。例如,在Tomcat服务器的web.xml文件中有如下节点内容:30这里的30表示session的超时时间,单位为分钟,如果用户登录后在30分钟内没有与服务器交互,那么当前用户的session将失效。
我们可以配置一个更大的数值(比如60),就可以延长session的超时时间,如果将该值改为0或负数的话,则表示session永不失效。
不过在实际的工作应用中,一味地上调session的超时时间设置并不怎么常见,大多数需要实现该功能的网站都将解决问题的焦点集中在第二条思路上。例如:一些在线网站均采用定时刷新页面的方法来防止session超时。