java - 检索时图像不显示

标签 java spring jsp jakarta-ee spring-mvc

我有一个表,其中图像以 BLOB 形式存储。我正在使用 JPA/Hibernate。图像被映射到类型为 blob 的 bean 字段。现在,我的 Spring Controller 将整个 bean 列表(该 bean 的每个对象都有一个 blob 对象)返回到我的 jsp。我想显示该jsp上的所有图像。

我尝试在我的jsp上使用类似的东西:

<c:forEach items="${itemList}" var="item" varStatus="status" >

<img src="<c:out value="${item.image}" />"/><br/> /*<img src="${item.image}"/> */

</c:forEach>

但这不起作用。我没有获取 jsp 上显示的图像列表,而是获取类名称,当我查看页面源代码时,我看到了类似 <img src="java.object.serilizableBlob@2134"/> 的内容

请帮我解决这个问题。如何在同一个jsp上显示所有图像。

最佳答案

<img src>必须指向一个 URL,而不是 toString()某些 blob 对象的表示。网络浏览器无法理解如何下载它,并且最终会出现 HTTP 404 错误。

你宁愿最终得到这样的结果:

<img src="url/to/image.png" />

要从数据库动态提供图像,请使用 servlet 。然后,您应该使用唯一图像 ID/文件名列表而不是 blob 列表,以便您的 HTML 最终像这样

<img src="imageservlet/image1.png" />
<img src="imageservlet/image2.png" />
<img src="imageservlet/image3.png" />

这样浏览器就可以通过URL下载图像并相应地显示它们。

不,在所有 HTML 中打印二进制数据没有帮助。 data URI scheme很接近,但并非所有现代浏览器都完全支持。

另请参阅:

关于java - 检索时图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9441421/

相关文章:

java - 三角函数中的 float 和 double

java - 如何在 Spring Boot 中的 application.yml 中添加 GCP(Google Cloud Storage)存储属性

UTF-8 编码不支持 JSP

Java 和 JSP - 将 .class 放在首选目录中?

java - OpenGL雾是基于Z轴而不是深度

java - 多个不同父类引用的 JPA 子类

java - Java中的优先级信号量

java - Spring Security OAuth2服务器端,如何在所有请求上要求client_id和client_secret

java - 在 REST API 中操作请求 (Spring )

jsp - spring 3.0同时支持jsp和jspx