问题是这样的,我把一个patient对象存储在session中,在其他页面找需要展示病人信息,第一个展示页面信息正确,在接下来的页面病人信息展示有时会发生错误,这个错误不经常发生。每次显示不正确的信息都是那几个,我想问一下,是不是session信息被写到硬盘上了?

解决方案 »

  1.   

    樓主講的比較籠統,最好檢查下代碼是不是有些地方覆蓋了Session中的值,或者是Session調用的時候不是同一個Session了.
      

  2.   

    还是需要在代码中跟踪下你的session在哪丢失或者被修改了。
      

  3.   

    只有可能发生覆盖了!~~~~~~~~~    在SESSION中设置值的时候用了相同的键!~~~~~~~~~~
      

  4.   

    Session是不可能错误的.
    是代码的问题.
      

  5.   

    session是不会将任何东西保存在内存之外的,无论服务器还是客户端。楼主还是检查一下,规范一下存入session中的acttribute的名字吧,错误肯定是自己操作不当引起的。
      

  6.   

    我的代码是这样的:
    // 在session中缓存患者信息
    session.setAttribute(ChangLiang.REGISTER_PatientMsgObject,regResponse.getPatientInfo());
    在页面中读取患者信息
    PatientMsgObject patient = (PatientMsgObject) request.getSession(false).getAttribute(ChangLiang.REGISTER_PatientMsgObject);页面中读取到的信息,有时就会发生错误。有三个页面读取患者信息,一般会在第二个或第三个页面发生错误。
      

  7.   

    ChangLiang.REGISTER_PatientMsgObject 是 final static 的实例对象吗?
    对 session.setAttribute 操作记录日志信息,或者跟踪一下。
      

  8.   

    你在session中绑定的是一条数据还是多条数据的集合?如果只是一个对象的话为什么还会有分页这一说如果是集合的话,你取值的方式就不对了吧
      

  9.   

    ChangLiang.REGISTER_PatientMsgObject 其实就是一个字符串
    session中绑定的是一个对象,不是集合。
      

  10.   

    从程序上看本身没有问题,问题很可能出现在你存入Session的值引起的。单步跟踪一下你存入的值。
      

  11.   

    你的意思是说在第二个页面和第三个页面都加上了以下代码:PatientMsgObject patient = (PatientMsgObject) request.getSession(false).getAttribute(ChangLiang.REGISTER_PatientMsgObject); 是这样吗?你把request.getSession(false)的false去掉再试一下
      

  12.   

    这个程序是运行在终端上的,客户端和服务器不在一起,我不能下断点跟踪。但是我在存储对象前,把值都打印出来了,在取出来时也打印了,其实在页面上展示也算是把值显示出来。发生错误的时候存取的值不一致。但这种错误不是经常发生。我有个疑问,session是有失效时间的,我在创建session的时候没有指定失效时间,那就应该是使用容器默认的,三天前的session信息我今天还能读出来。我就觉得session被固化了。