网站一般都是利用session来保存用户的数据的。比如用户登陆后就可以用session来保存用户信息。但有个问题,就是用户登陆网站后,一段时间不进行操作。session会因为超时而给销毁掉。现在我想实现:只要用户还在网站上,浏览器打开了网站的页面。就算不进行任何的操作,用户的session都不会被销毁。而且该实现不能影响网站的性能。
解决方案 »
- 很纠结的问题。求大虾
- quartz spring hibernate session问题
- 请问在WEB项目中如何创建常数bean?
- 求JSP聊天室的刷新问题,即滚屏的实现方法
- 关于JSP中使用IF语句的错误,为了实现读取空数据后报告一句话,急!~!~!~!~!~!~急急!~!~!~!~!~!
- 请教关于HTML表单控件的问题,谢谢!
- 兄弟们,俺是一个新手,这个问题是什么原因造成的啊?帮帮忙啊,以身相许~~
- jsp:include 和jsp:forward有什么区别?
- JAVAMAIL中如何删除邮件服务器上的邮件?
- 请问ASP+EXCHANGE是一种组合,另外JSP+????功能相同???
- 关于HQL的考试题
- csdn两周免登陆的实现方法的讨论
我主要是想实现,只要用户打开了网站的任意页面,就算不进行任何的操作,对应的session就不会被销毁。也就是说这个页面会自动定时的去发送请求,以确保session一直存在。而这种请求对服务器造成的负担又必须降到最低
楼上的方法是让session一直存在。很不可取的做法。或是说对于我这个具体的项目很不可取
每个10分钟给web服务器发送一个请求..这样session就不会被销毁.
当你关掉ie,请求无法发送,自然也就销毁了.
在页面里放置一iframe(可利用CSS将其隐藏),iframe的src指向一个.jsp页面(例如叫a.jsp),可以定期刷新a.jsp页面,
最好在a.jsp里写一句:
//我是搞ASP.NET和ASP的,JSP我不会,下面只是我的一个思路:
session["Save"]="Keep";
只有修改web容器的配置文件。
1.关闭浏览器,关闭session,也就是session这个进程被结束掉
2.调用HttpSession的invalidate()方法,删除HttpSession对象和数据,通常此方法用于“注销”
3.两次访问时间接安格大于session定义的,非活动时间间隔,通常默认时间是1800秒根据楼主的叙述的情况,您可以通过修改该Session的默认配置来实现您的要求,具体操作如下:如果服务器是tomcat:
在conf目录下的web.xml文件中有配置:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
60代表一小时,也就是60分钟
默认不默认都是通过配置的,配置成多少,默认就是多少
注意发送ajax的时候加时间戳避免缓存问题
隐藏的frame页面也要设置不缓存
我的需求:用户登陆后只要关闭浏览器,或是浏览器中关闭了所有网站的网页(没有执行登出操作的)在3分钟后对应的session就会被销毁。因为这段时间用户没有再往服务器发送请求,session超时(3分钟这个时间已经在配置文件中设置)。
而只有用户的浏览器中还打开了至少一个网站的网页,每个网站的网页中都有这个功能:定期的访问网站,以维护对应的session。
这样做的目的是:用户打开网页一段时间不操作,等回头来执行某些操作时,服务器还能从对应的session中获取到其信息。而不用重新new session。再从数据库中获取这些信息。还能记录用户的在线时间。
综合如上所述:我觉得16,跟26楼的朋友的意见比较符合我的要求
每个用户登陆都会有一个sessionID
当这个用户退出系统的时候,你可以把这个session给kill掉就可以了
iframe中的页面刷新的脚本是靠
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true" />
<META HTTP-EQUIV="REFRESH" CONTENT="2;url=地址">ajax刷新不写了你自己写吧,不难,没用过的话我博客里面也有ajax调用的例子。注:以上META 是我刚刚随意搜出来的没有测试过。