如何从数据库中检索图像并放在JSP上?

时间:2010-12-02 08:04:52

标签: java jsp servlets jdbc

我有一个JSP页面,它应该从数据库中获取所有图像,并且应该显示在一个表上。我的结果集对象'rs'指向图像。我的代码是这样的:

String query = "select image from stock";
rst = stmt.executeQuery(query);
while(rst.next())
<%
<td><img height="89" src=<%rst.getString(1)%></td>
%>
  }

我知道,getString不适用于BLOB类型。我甚至使用了getBinaryStream(),但没有成功。有什么想法吗?

4 个答案:

答案 0 :(得分:5)

使用以下代码将Blob转换为byte []:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
InputStream in = blob.getBinaryStream();
int n = 0;
while ((n=in.read(buf))>=0)
{
   baos.write(buf, 0, n);
}
in.close();
byte[] bytes = baos.toByteArray(); 

使用Servlet编写图像:

if (bytes != null && bytes.length > 0) {
 response.setContentType("image/jpg");
 response.getOutputStream().write(bytes);
 response.getOutputStream().flush();
 response.getOutputStream().close();
}

在jsp:

中使用servlet请求网址来回溯图像
<img src="imageDisplayProcess.do?pKey=imageId" width="117" height="160"
 onError="loadImage()" onAbort="loadImage()" />

imageDisplayProcess.do?pKey=imageId //should be your image servlet URL

答案 1 :(得分:2)

Here is complete example ,

注意:请将此示例仅作为参考来理解方法,

答案 2 :(得分:1)

  1. 创建一个servlet并将其映射到,例如/image/*
  2. 使用src="image/<%= imageId %>,其中imageId是数据库中每个图像的唯一ID
  3. servlet getBinaryStream()中的
  4. 并将其传输(例如使用IOUtils.copy(..))到response.getOutputStream()
  5. Content-Type设置为image/jpegimage/png(或任何类型)

答案 3 :(得分:0)

只需将响应类型设置为“image / jpg”并使用ResultSet

检索列

演示代码吼叫---

     if(rs.next()){
       int len = imgLen.length();
       byte [] rb = new byte[len];
       InputStream readImg = rs1.getBinaryStream(1);
       int index=readImg.read(rb, 0, len);
       response.setContentType("image/jpg");
       response.getOutputStream().write(rb,0,len);
       response.getOutputStream().flush();
       }
相关问题