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”)不工作的主要内容,如果未能解决你的问题,请参考以下文章