SpringMVC项目,imgUrl是图片地址,通过以下方法,可以显示图片
页面代码:
<img src="${webPath}/imgPro.shtml?imgUrl=${tm.cover}" />
java Controller类:
@RequestMapping("/imgPro")
public String imgPro(HttpServletRequest request,HttpServletResponse response,String imgUrl)throws IOException {String newImgUrlMd5 = new String(DigestUtils.md5Hex(imgUrl));
byte[] data = (byte[]) memcachedClientService.get(newImgUrlMd5);
if(data ==null){
//new一个URL对象
URL url = new URL(imgUrl);
//打开链接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式为"GET"
conn.setRequestMethod("GET");
//超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
//通过输入流获取图片数据
InputStream inStream = conn.getInputStream();
//得到图片的二进制数据,以二进制封装得到数据,具有通用性
try {
data = readInputStream(inStream);
memcachedClientService.set(newImgUrlMd5, data);
} catch (Exception e) {
e.printStackTrace();
}
}
ByteArrayInputStream is = new ByteArrayInputStream(data);
BufferedImage bi1 = ImageIO.read(is);
// 禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
// 将图像输出到Servlet输出流中。
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi1, "jpeg", out);
return null;
}