在JSP頁面中顯示數據庫中的圖片

情楓雨一 15年前發布 | 11K 次閱讀 ActionScript 小米2 Modern UI
    今天遇到這個問題,不過在高人的幫助之下,解決了哈。下面分享一下。
    一般在數據庫里面存圖片保存的都是圖片的路徑,網上說這樣容易優化,如果想在JSP頁面中顯示圖片也好解決,網上有例子,在這兒就不啰嗦了;但也有把圖片直接保存到數據庫,本人就是,呵呵。
好,切入正題。
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("image/jpeg");
  
  String id = request.getParameter("imgId");
  if(id == null) {
   return;
  }
  
  int productId = Integer.parseInt(id);
/*********通過ID可以從數據庫里面找到該值,這里代碼略***********/
  PrintWriter out = response.getWriter();
  byte[] buffer = pib.getProductImage();// 這里的pib是一個JavaBean的實例,方法返回的是一個byte數組,我用了Hibernate框架,所以在Oracle數據庫中的CLOB對應的屬性類型是byte[]
  InputStream is = new ByteArrayInputStream(buffer);
  int a = is.read();
  while(a != -1) {
   out.print((char)a);
   a = is.read();
  }
  out.flush();
  out.close();
  
 }
通過以上代碼在頁面中訪問該Servlet能顯示圖片。
但是同樣的代碼在JSP中卻顯示不了,出來的是一堆亂碼,顯然,這不是想要的效果。但問題究竟出在哪兒,我也沒去研究,經高人指點,既然能在Servlet中能正常的圖片,能不能直接通過<img>標簽的src屬性直接訪問Servlet?
經過筆者測試,可以解決問題。
以下是JSP代碼:
<img src="/productImg?imgId=<jsp:getProperty property="productId" name="product"/>"><%--productId是javaBean中的屬性對應數據庫里面的id字段,也就是上面所說的ID,product是javaBean的實例,與上面pib屬同一個類型--%>
    如果用JDBC連接數據庫,以上就要分兩次查詢,貌似用Hibernate只查一次數據庫。
 本文由用戶 情楓雨一 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!