目前系统运行过程中,会莫名其妙的跑到登陆页面,每个jsp头都加了用户的session验证,而且都是在操作过程中丢失的,肯定不是过期引起的,会是啥原因的?没有测试出丢失的规律,是偶尔发生的,
解决方案 »
- tomcat与jsp问题??
- jsp获取servlet中的值
- 用getServletContext()为什么得不到对象,总是报空指针异常
- XPATH解析带有多个命名控件的XML问题
- weblogic8.1 为什么不能识别 EL 语句?怎样才能解决?
- 请教过滤器问题
- jsp中怎么把页面输出和逻辑程序分开的方法啊!
- [讨论] 给 Tomcat 配 1G 的内存是否合适?
- TOMCAT起不来为什么?
- 在Vector里存的是一个contaier的对象,类container里有方法getShortName()
- Invalid path was requested
- javabean和JSP问题搞不定...
每一个session都会生成cookie来保存session ID。
这个我试试,不知道能不能解决,太难模拟了,不过我们用了好多的框架,iframe,说不定真是这个原因呢
服务器没事
IE中好像对cookie的个数是做了限制的,好像每个域最好20个,超了就可能丢失session
要调试你可以写一个监听的类:
public class LoninListener implements HttpSessionBindingListener{
public void valueBound(HttpSessionBindingEvent event)
{
}
public void valueUnbound(HttpSessionBindingEvent event)
{
记录相关信息
}
}在登录方法里采用session.setAttribute("longin",new LoninListener());进行绑定。这样当login这个属性失效后就会调用LoninListener 中的valueUnbound方法。valueUnbound方法你可以根据自己想获取的信息进行实现
用一些调式工具跟踪一下或者干脆把session持久化到数据库,如果丢失了再去数据库找一遍。
这个问题我曾与它搏斗了好多天。
就是:session没有过期,而是浏览器向服务器方传请求时,会丢失JSESSIONID的这个COOKIE。经过我的多方测试,我发现:当使用frameset 或 iframe 时,出现的可能性很高。
查了很多资料,微软的解决方案建是:setHeader("P3P","CP=CAO PSA OUR"),
但对我们的系统,没有用。
后来用户实在对我们这个问题很烦脑,最后不得不放弃session,全部采用URL重写。(以后的系统中,我们就少用了frameset 与 iframe了----若要用,应该使用URL重写。)
估计原因是
大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开
IE中的cookie数量限制(每个域20个cookie)可能导致session丢失
要不就用 Eclipse的dug
22楼: 服了,那就把那些代码全删点,用一个filter过滤全搞定,基本丢失可能性下降80%吧action 中你也过滤么?action分项目前台的action和后台添加数据的action你怎么处理session问题,说的真简单
关ACTION什么事情,在filter里面重新确认下session嘛。相当于继电器(模拟信号传输损耗)。
这个比率多少我不知道。。但是肯定有一定的作用。
确定其他操作没有修改session。
确定要找的session正确
确定需要session的页面能正确得到正确的session。所谓丢了,就是以后都找不到。
回到登录页面后,你后退做其他操作是正常还不正常?
是都不正常还是有时候不正常。先定位问题出现的地方吧。