我在编写Java App。并得到一个错误,因为浏览器没有连接到服务器来获取新值,只是从缓存中重新定义... 我做了这样的事情:
<% if(request.getAttribute("msg")!=null)
out.println("alert("+request.getAttribute("msg")+")");
%>
它运行正常,但是当我点击一个链接然后点击浏览器中的BACK按钮它就不会调用服务器...我在Java上尝试过类似:response.setHeader("Pragma", "No-Cache");
的东西
和html上的<meta http-equiv="expires" content="no-cache">
,但没有什么能让它发挥作用......
有人有建议吗?
答案 0 :(得分:1)
确保您的浏览器设置为每次访问网站时都要求新页面。您可能还希望添加一个额外的参数来请求,如时间戳,以便它始终看起来像是对服务器的新请求。
答案 1 :(得分:0)
您确实需要通过设置相应的响应标头来指示Web浏览器不缓存响应。正确的响应标头集是:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
您希望在Filter
类中执行此操作,该类映射到感兴趣的url-pattern
,例如*.jsp
而不是在所有JSP页面上对其进行复制。
PS:在测试之前不要忘记清除浏览器缓存,旧页面可能仍在那里;)