检索时不显示图像

时间:2012-02-25 05:03:48

标签: java spring jsp java-ee spring-mvc

我有一张表格,其中存储的图像为BLOB。我正在使用JPA / Hibernate。映像映射到类型为blob的bean字段。现在我的Spring控制器将整个 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上显示所有图像。

1 个答案:

答案 0 :(得分:2)

<img src>必须指向一个网址,而不是某个blob对象的toString()表示。 webbrowser不会理解如何下载它,它将最终导致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接近,但并非所有现代浏览器都支持此功能。

另见: