session失效时,执行HttpSessionListener的sessionDestroyed(HttpSessionEvent se)方法,现在我想在页面上给出提示,使用PrintWriter out=response.getWriter();    可是现在得不到response,请教大师有什么好的办法,只要能在jsp中弹出对话框提示就行,在线等

解决方案 »

  1.   

    这个不是很好弄吧。换个思路,搞个监听,监听session里的当前登录的用户名,如果没有就提示
    代码里HttpServletRequest request = ServletActionContext.getRequest(); //获取request
    request.setAttribute("errorMsg", "用户登录超时请重新登录");
    转向登录界面
    <script language="JavaScript" type="text/javascript">
    alert("${requestScope.errorMsg}");
    window.parent.parent.parent.location.href="login.jsp";
    </script>
      

  2.   

    struts2的拦截器 ,就可以实现 ,本质还是过滤器
      

  3.   

    我是在前台用户浏览时来管理的,如果用户没有登录,也总报“session超时”,这样就太不合理了,我觉得最好是在session监听器HttpSessionListener里面执行最好了,因为session超时直接就调用的sessionDestroyed方法,比过滤器要合理的多,过滤器可以设置session超时才能执行的方法吗?判断session里的值是不可行的,因为用户不登陆也可以用的,只是在登录后给出“session超时”的提示
      

  4.   

    http协议是有请求才有响应,现在的问题是:没有请求也能给客户端的浏览器发送跳转的响应,这个问题需要用到服务端推技术。
    实现方式有很多种,google一下:“反向ajax”,或者“comet”,“pushlet”
      

  5.   

    单独定义一个html页面openwindow.html(或jsp)内容为:alert("提示"),window.location.href=目的页面判断玩session过期后,转发或重定向到openwindow.html这个页面
      

  6.   

    5楼 的,你说的转发和重定向需要用到request和response,如果我能得到request,我就不用这么费劲了,现在就是得不到request,本来我是想通过PrintWriter out = response.getWriter();在页面打印出来,现在主要是得不到HttpServletRequest
      

  7.   

    不往服务器发请求服务器不可能保持常态链接。如果定时发请求那session也不会失效。
      

  8.   

    我已经改好了,使用javaSwing弹出对话框,加上JOptionPane.showMessageDialog(null, "session超时,请重新登录……");搞定,谢谢大家