一测试网站在开发中,以前从没出现过此问题,阐述如下:
例如现在我网站有会员的登陆设置,只有会员登录会才能实用某些功能,就假设是csdn的技术论坛吧,只有登陆后才可以发贴或管理。
登陆csdn后,便可以进行会员权限的操作。在每个页面都设置了会员是否登录的判断,放在一个bean中,bean的生存期为session,若bean的某项值为空,则判断session过期或不存在,不会员权限允许操作。----这是权限的一般设计方式了。
现在问题是: 键入用户名密码,可以登录了,可以进行操作了。但在停顿数秒后--停顿的意思是保持页面不动不做任何操作--session失效了! 页面刷新后程序判断get那个信息记录bean中值为空,自动跳转到login.jsp页面中!! login页面中的setMaxInactiveInterval() 在测试时设定为“3600”,“30”,“-1”等值,但无一起作用,tomcat配置文件web.xml的session-timeout设置为30了还是不行!
搜索很多内容但难确定关键字,不凑效。
莫明郁闷! 究竟为何呢? 我程序中的问题? java虚拟机的内存问题? tomcat问题?
请各路英雄指教!! 重酬! 300分够不?
是不是IE浏览器中的设置问题? 我以前遇过这种情况
IE6.0 bete版有这个问题,不是也是有的机器没问题,有的机器有问题。
最后重装IE就解决了
我以前也遇到过这样的问题,换台机子测试就是好的,所以我想这个和咱们的代码没关系,和客户端设置以及浏览器有关,要不你在多找几台测试一下?
在页面中设置一下试试:
一般服务器的session超时时间是30分钟,可以在页面中设置session超时时间:
session.setMaxInactiveInterval(60*30);
怀疑你有在其他页面中有新建session对象。
关注啊!!
我只在web.xml 中做了设置,但现在为止,好象只要页面连接超过设置时间会把我踢回login,没出现你说的那种情况。也有可能是与数据库连接断了的原因。
我也有做同你一样的功能,一切正常。象你这种突然出现的错误,而且你在各种环境下都试过了,我想再仔细看一下代码,或者服务器配置及各种配置文件,
改成cookies吧,有效期用一天然后在你的登陆页面里面有个删除cookies的代码。
就是每次请求登陆时就自动请空cookies了,防止有些人不注销退出!
这样应急一下吗?
不是都调用一个servlet 吗?
然后把登陆的处理页面上setSession 改成cookies不就可以了吗
你其他页面是怎么调用的。
没有把验证的和普通分开吗/
那就惨了。
要不你就卸载tomcat然后重新装,记住备份你的jsp文件啊,别着急把所有的代码都搞掉了,
因为我犯过这样的错误!:)
首先,你的问题肯定是程序问题!!
不要乱怀疑,也不要迷信~~~~
自己的程序自己应该更容易看懂,如果不介意,贴源码出来。
你还是要保证项目能按时完成.而你的问题又可能不会一下子解决.所以我想你还是用一下别的服务器试一下了(比如用RESIN )看看到底是什么原因.
问题解决了吗??对不起啊,最近比较忙,没能及时跟朋友一起讨论问题....
你用的是tomcat,请问另外加了什么服务了吗?比如说apache等,试着先只用tomcat测试...
我个人估计是你tomcat中的某些配置的问题....因为代码和其它都是正确的...
在server.xml中查找
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
这一段,是否你的time设置的太小?有否做过改动??
如果不行,请重新装个新的tomcat试试(不要覆盖以前的,可以同时存在的)
哦,对了,还有一点,在你的虚拟目录中的web.xml中..
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
要改成
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
2.2中还不能支持此标记,连filter都不支持,呵呵...
我是这么想的:
1:全部重新做一遍试试
2:如果时间来不及或者不想那么大动干戈的话。我想可以这样解决一下:
你可以在数据库里加两个字段。分别为管理权限的级别的。其中一个字段显示当前状态,一个字段显示实际权限当用户登陆时候把显示当前状态的字段添入实际权限字段的内容,然后当用户登陆以后不在进行session判断而是进行当前状态这个字段来进行判断。我想数据库里的值不会无缘无故的丢失吧。退出时候清空当前字段内容。
肯定有漏洞不妥之处,我只是提出一个思路从另外一个角度解决一下你的问题吧。
Good Luck!!!!!
是不是你页面的session太多了,或者有重名的。session没有了要注销掉。