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;
}