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

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

String query = "select image from stock"; rst = stmt.executeQuery(query); while(rst.next()) <%  %> } 

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

这是完整的例子,

注意:仅考虑此示例作为参考,以了解方式,

使用以下代码将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请求URL来反转您的图像:

  https://stackoverflow.com/questions/4332907/how-to-retrieve-images-from-database-and-place-on-jsp/imageDisplayProcess.do?pKey=imageId //should be your image servlet URL 
  1. 创建一个servlet并映射它,比如/image/*
  2. 使用src="image/<%= imageId %> ,其中imageId是db中每个图像的唯一ID
  3. 在servlet getBinaryStream()并将其传递(例如使用IOUtils.copy(..) )到response.getOutputStream()
  4. Content-Type设置为image/jpegimage/png (或任何类型)

只需将响应类型设置为“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(); }