Java 如何在浏览器上强制重新读取JSP页面中的属性文件
看起来浏览器正在缓存从属性文件读取的值。我不想给该网页的所有用户发送电子邮件,要求他们清除缓存,因为某个属性发生了更改。肯定有办法迫使读者重读?我不介意每次打开页面时都进行正确的读取,但是在控制台上我可以看到Tomcat服务器确实读取了正确的(新的)值,所以它一定是浏览器缓存。 这是我的代码,标准java,在一个名为MyUtils.java的文件中:Java 如何在浏览器上强制重新读取JSP页面中的属性文件,java,html,jsp,Java,Html,Jsp,看起来浏览器正在缓存从属性文件读取的值。我不想给该网页的所有用户发送电子邮件,要求他们清除缓存,因为某个属性发生了更改。肯定有办法迫使读者重读?我不介意每次打开页面时都进行正确的读取,但是在控制台上我可以看到Tomcat服务器确实读取了正确的(新的)值,所以它一定是浏览器缓存。 这是我的代码,标准java,在一个名为MyUtils.java的文件中: /** * @return Properties from properties file set in folder: /tomcat/con
/**
* @return Properties from properties file set in folder: /tomcat/conf/TSprops.properties
*/
public Properties getProperties() {
String serverRoot = System.getProperty("catalina.home");
String propsFile=serverRoot+"/conf/TSprops.properties";
try {
FileInputStream inp = new FileInputStream( propsFile );
Properties props = new Properties();
props.load( inp );
inp.close();
return props;
} catch (Exception e) {
return null;
}
}
在我的.JSP文件中,我有:
<!doctype html>
<jsp:useBean id="ut" scope="page" class="MyUtils" />
<html>
<%
Properties props = ut.getProperties();
String NBH=props.getProperty("NextBankHol", "");
%>
<body>
Next Bank Holiday: <%=NBH%>
下一个银行假期:
当我显示NBH的值时,它显示的是“旧”值,而不是我刚刚更改的值。
只有在清除浏览器缓存时,我才能看到正确的值。属性是服务器端构造,与客户端无关。更可能的情况是,整个生成的页面都被缓存了。您可以使用浏览器的开发人员工具验证这一点。使用开发工具,您还可以检查HTTP缓存头是否设置正确。根据经验,不应允许缓存生成的HTML页面。看,你完全正确。我在客户端有一个部分,这实际上是可行的,另一个部分是通过servlet访问并缓存的。令人恼火的是,我无法用servlet解决缓存问题,但通过将重要的代码从servlet移动到JSP解决了这个问题,现在可以工作了。谢谢你的评论,这让我又看了一遍。