在JSP頁面中顯示數據庫中的圖片
今天遇到這個問題,不過在高人的幫助之下,解決了哈。下面分享一下。
一般在數據庫里面存圖片保存的都是圖片的路徑,網上說這樣容易優化,如果想在JSP頁面中顯示圖片也好解決,網上有例子,在這兒就不啰嗦了;但也有把圖片直接保存到數據庫,本人就是,呵呵。
好,切入正題。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
throws ServletException, IOException {
response.setContentType("image/jpeg");
String id = request.getParameter("imgId");
if(id == null) {
return;
}
int productId = Integer.parseInt(id);
String id = request.getParameter("imgId");
if(id == null) {
return;
}
int productId = Integer.parseInt(id);
/*********通過ID可以從數據庫里面找到該值,這里代碼略***********/
PrintWriter out = response.getWriter();
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();
}
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只查一次數據庫。
本文由用戶 情楓雨一 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!