由于如何在JSP页面中从数据库检索和显示图像,我找到了一种从 db / blob 检索图像的很好的解决方案?
但这是在每个图像请求上使用 JDBC连接的 解决方案。
我正在使用 Spring 3 注释和 Hibernate 3 。
我试图通过我的’imageService’做类似的事情,它通过 ImageServlet类中 的注释自动装配,但是我得到了 nullPointerException ,这意味着 imageService 可能不是由依赖注入设置的。
有什么办法解决这个问题吗?我不喜欢在图像请求上建立单个jdbc连接。
我希望您将图像以BLOB类型存储在表中(如果不尝试这样做,因为这是最佳做法)。让我们假设您有一个Person类,其中包含image存储在数据库中的人员的。如果要对此进行映射,只需在个人POJO中添加保存图像的属性。
Person
image
@Column(name="image") @Blob private Blob image;
显示时,将其转换为a byte[]并显示。
byte[]
private byte[] toByteArray(Blob fromImageBlob) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { return toByteArrayImpl(fromImageBlob, baos); } catch (Exception e) { } return null; } private byte[] toByteArrayImpl(Blob fromImageBlob, ByteArrayOutputStream baos) throws SQLException, IOException { byte buf[] = new byte[4000]; int dataSize; InputStream is = fromImageBlob.getBinaryStream(); try { while((dataSize = is.read(buf)) != -1) { baos.write(buf, 0, dataSize); } } finally { if(is != null) { is.close(); } } return baos.toByteArray(); }
您可以查看以下示例以了解更多信息。
如您所见,有多种方法可以做到这一点。选择一个适合您的。