jsp页面img通过src指向controller方法获取的图片没有更新

前台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都不一样,

那么原来图片不刷新的问题就解决了

原文地址:https://www.cnblogs.com/kxdq/p/7998227.html