2013-05-10 187 views
4

我试图在用户会话过期或连接未激活时刷新我的网页。我尝试了很多代码,但似乎没有工作。我用最后的代码是response.setheader(“Refresh”,“0”)不起作用

if(session.getAttribute("connection") != null && !session.getAttribute("connection").equals("")){ 
      conn = (DBConnection) session.getAttribute("connection"); 
      if(conn == null){ 
        response.setContentType("text/html"); 
        response.setHeader("Refresh", "3"); 
        return; 
       } 
      }else{ 
       response.setContentType("text/html"); 
       response.setHeader("Refresh", "3"); 
       return; 
      } 

我也试过response.sendRedirect是()和request.getrequestdispatcher.forward(),但它并没有正常工作。该servlet正在被期望json对象的javascript调用。

+0

当它实际过期时正在访问HttpSession? – Oneb 2013-05-10 06:34:16

+3

刷新元标记和标题只有在您发送代理将要解释的html文档时才有效。这听起来像你只是发回一些JavaScript正在使用的数据。如果是这种情况,那么JavaScript将需要触发代理进行页面刷新。 – BevynQ 2013-05-10 06:35:04

+0

在你的代码中If条件的目的是什么?只需添加'response.setContentType(“text/html”);''和'response.setHeader(“Refresh”,“3”);' – 2013-05-10 06:36:26

回答

1

您无法直接从该servlet直接在客户端上执行命令。请注意0​​依赖来自客户端的请求和来自服务器的响应。

所以,如果没有请求从客户端进行,那么没有任何东西可以从服务器发送(仅仅是因为服务器不必响应的请求)

我知道你已经看到了这个功能,并且是它可以做到。但不是这样。 Ajax是在这里你最好的选择......(发送定期的请求,并从服务器获取等响应回)

0

如果你想有一个页面被刷新的使用在页头以下meta标签

<meta http-equiv="refresh" content="5">