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

发布于 2024-10-05 18:35:05 字数 350 浏览 2 评论 0原文

我有一个 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(),但没有成功。有什么想法吗?

I have a JSP page and it should get all the images from database and should to display on one table. My resultset object 'rs' is pointing to images. My code is like this:

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

I know, getString will not work for BLOB type. I was even used getBinaryStream(), but not succeed. Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

究竟谁懂我的在乎 2024-10-12 18:35:06

使用以下代码将 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 检索图像:< /强>

<img src="imageDisplayProcess.do?pKey=imageId" width="117" height="160"
 onError="loadImage()" onAbort="loadImage()" />

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

User the following piece of code to convert Blob to 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(); 

Use Servlet to write your image:

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

Use retrive your image using servlet request url in jsp:

<img src="imageDisplayProcess.do?pKey=imageId" width="117" height="160"
 onError="loadImage()" onAbort="loadImage()" />

imageDisplayProcess.do?pKey=imageId //should be your image servlet URL
月光色 2024-10-12 18:35:06

这是完整的示例,

注意:将此示例仅作为理解方式的参考,

Here is complete example ,

Note: Consider this example as reference only to understand the way,

怼怹恏 2024-10-12 18:35:06
  1. 创建一个 servlet 并将其映射到 /image/*
  2. 使用 src="image/<%= imageId %>,其中 imageId< /code> 是 servlet getBinaryStream() 中数据库中每个图像的唯一 ID
  3. ,并将其传输(例如使用 IOUtils.copy(..))到 < code>response.getOutputStream()
  4. Content-Type 设置为 image/jpegimage/png (或任何类型)是)
  1. Make a servlet and map it, to, say, /image/*
  2. Use src="image/<%= imageId %>, where imageId is the unique id of each image in the db
  3. in the servlet getBinaryStream() and transfer it (for example using IOUtils.copy(..)) to response.getOutputStream()
  4. Set the Content-Type to image/jpeg or image/png (or whatever the type is)
烟─花易冷 2024-10-12 18:35:06

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

Just put response type as "image/jpg" and retrieve column using ResultSet

demo code written bellow---

     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();
       }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文