我使用以下代码在临时位置创建文件并在该位置保存图像,加载此页面时,如果旧图像被删除或始终不显示缓存图像,我总是会看到一个红叉“最新图像”。
String file_suffix=df.format(new Date());
File file= new File("/home/martini/Apache/tomcat/apache-tomcat-5.5.27/webapps/dashboard/tmp_imgs/tmp"+file_suffix +".jpeg");
if(!(file.exists())){
file.createNewFile();
}
p_resp.setContentType("image/jpeg");
chart = u.genarateLineChart(m_martiniInstance);
ChartUtilities.saveChartAsJPEG(file, chart, 625, 800);
HTMLHelper.writeHTMLHead(m_out);
m_out.println("<body bgcolor=\"#B4A383\"> "
+ " <center> "
+ " <img src=\"/dashboard/_imgs/sungard_martini.png\" alt=\"SunGard Martini\" border=\"0\" /> "
+ " <p><br><br></p>");
m_out.println(
" <div align=center>"
+ " <img src=\"/dashboard/tmp_imgs/tmp" + file_suffix + ".jpeg\" border=\"0\" /> "
+"</div>"
+ " <p><br><br></p>");
我希望每次都为图像创建一个新文件,并将新图像加载到临时文件中,而不管临时文件中是否存在先前的图像。 有什么方法可以实现这一点,因为当我看到红十字或旧文件时,我刷新页面,然后看到正在加载的新图像。
谢谢
巴维亚
最佳答案
尝试在 servlet 的 doPost()/doGet() 方法的开头调用 response.setHeader("Cache-Control","no-cache");
。这应该可以防止缓存。
另一个技巧是在 URL 末尾添加某种虚拟参数。这可以在客户端使用 javascript 来实现。例如,您的网址如下所示:
http://myserver/myapp/images/myimage.jpg
修改为
http://myserver/myapp/images/myimage.jpg?dummy=123456
虚拟参数的值可以是时间戳(以毫秒为单位)或随机数等。
关于java - 使用 servlet 加载的图像始终显示红十字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676163/