我自己写了一个小小项目,两个jsp页面,一个java类,用了struts2和hibernate框架。
流程是
jsp(发送请求)→java(从数据库获取数据,并写入session)→jsp(接受session数据并显示)
如果我第一次打开浏览器,通过上面的流程可以顺利的获取数据。然后我直接修改数据库里面的数据,然后再重新执行上面的流程,得到的结果还是旧的数据,只有在关闭浏览器,然后重新打开的时候才可以获取到数据
这样的话应该怎样解决??
注1:
Map session=(Map)ActionContext.getContext().get("session");
我是这样定义的
注2:
如果我不用session而用request就没有这个问题
注3:
由于我多个页面都需要读取这个数据,所以只能是session或者application,但是两个都是相同的情况求高手赐教

解决方案 »

  1.   

    Map session=(Map)ActionContext.getContext().get("session")这个session和httpsession不是同一个session,你往session里存的时候可以通过request得到httpsession再setattribute,在得到的就是新的数据了
      

  2.   

    arg0.getSession().setAttribute(arg0, arg1);
    arg0.getSession().getAttribute(arg0);
    //清空
    arg0.getSession().invalidate();
      

  3.   

    session.invalidate()  销毁全部
    session.removeAttribute() 销毁某个
      

  4.   

    request具体怎样操作得到httpsession?
      

  5.   

    HttpSession session = request.getSession();
    Goodstable findid=(Goodstable)list.get(0);
    session.setAttribute("findgoodsidsystem", findid);
    return "success";
    我已经按照你说的做了,但是更新后session还是没更新,怎么办?
      

  6.   

    还是直接在望session是赛数据的时候 先清除session信息吧 。。或者更新也行
      

  7.   

    你在跳转页面之前,先get一下,看得到的是不是最新的,如果是新的就是页面的问题,我就真的不清楚了,你put进去相同的key肯定是可以覆盖的,无需removeAttribute() 
      

  8.   

    刚我测试了一下,直接set没问题,我认为你现在session取得的还是不一致的
      

  9.   

    更新和清空是两个不同的东西。
    清空的话关闭session