response.setheader(“刷新”,“0”)不工作

Posted

技术标签:

【中文标题】response.setheader(“刷新”,“0”)不工作【英文标题】:response.setheader("Refresh", "0") not working 【发布时间】:2013-05-04 18:57:29 【问题描述】:

当用户会话已过期或连接未激活时,我正在尝试刷新我的网页。我尝试了很多代码,但似乎没有用。我使用的最后一个代码是

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 调用。

【问题讨论】:

你访问的HttpSession实际上已经过期了? 刷新元标记和标题仅在您发送回代理将解释的 html 文档时才有效。听起来您只是在发回一些 javascript 正在使用的数据。如果是这种情况,那么 javascript 将需要触发代理进行页面刷新。 在您的代码中,If 条件的目的是什么?只需添加response.setContentType("text/html");response.setHeader("Refresh", "3"); 感谢@BevynQ。但是有没有办法可以触发通过servlet调用javascript的html文件? @Oneb 和 ling.s 实际上该程序有效。我只是在做一些修改,比如添加刷新 【参考方案1】:

如果您想刷新页面,请在页眉中使用以下元标记

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

【讨论】:

【参考方案2】:

您不能直接从 servlet 直接在客户端上执行命令。请注意,http protocol 依赖于来自客户端的请求和来自服务器的响应。

因此,如果客户端没有发出任何请求,那么服务器将无法发送任何内容(只是因为服务器没有响应请求)

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

【讨论】:

以上是关于response.setheader(“刷新”,“0”)不工作的主要内容,如果未能解决你的问题,请参考以下文章

页面定时刷新或自动跳转

servlet响应解析

servlet实现定时刷新功能

页面后退时强制刷新页面方法

通过response.setHeader方法设置头文件

HttpServletResponse setHeader 和 addHeader区别