前台jsp页面添加一个img标签,然后src指向一个控制器的方法来获取图片
<img id="mutationImage" style="height: 100px; 100px;" src="${pageContext.request.contextPath}/b065/getImg?imgPath=${plugin.equipment_img1}" />
后台代码
@RequestMapping("getImg")
public void getImg(String imgPath,HttpServletRequest request,HttpServletResponse response){
try {
log.info("54 [B065] imgPath: "+imgPath);
log.info("54 [B065] img read start ");
File f=new File(imgPath);
if (f.exists()) {
InputStream is = new FileInputStream(f);
int i = is.available(); // 得到文件大小
byte[] buffer = new byte[i];
s.read(buffer); // 读数据
is.close();
response.setContentType("image/*"); // 设置返回的文件类型
OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
toClient.write(buffer); // 输出数据
toClient.close();
log.info("54 [B065] img read end ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
这样写基本实现了我们想要的功能,但是问题来了,当我们通过修改功能,修改了后台服务器上的图片的时候,我们前台的jsp图片并没有刷新,
而还是原来的图片,这是什么问题呢,因为这是浏览器缓存干的,那怎么解决呢?
只需要一个js函数就可以了。Math.random
<img id="mutationImage" style="height: 250px; 300px;"src="/b065/getImg?imgPath=${plbean.equipment_img3}&check="+Math.random() />
原来的src是固定不变的浏览器加载还是以前的图片,也不会执行controller方法去加载图片,我们加一个随机数后,这样每次的url都不一样,
那么原来图片不刷新的问题就解决了