以幻灯片形式呈现图像,以longblob形式存储在数据库中

时间:2011-09-07 12:09:50

标签: jsp jstl

我们使用spring和hibernate开发了一个小型Web应用程序。我们的应用程序具有提升图像和视频的功能,我们将图像和视频以longblob格式存储在数据库中。
我们正尝试使用现有的基于互联网的基于javascript的“简单控件库”http://www.dynamicdrive.com/dynamicindex4/simplegallery.htm以幻灯片形式显示这些图像。

我试图调用一个html页面,控制器会将其重定向到jsp页面,如下所示:

var Imagearray1 = [
            <c:set var="count" value="0"/> 
            <c:set var="comma" value=","/>
            <c:forEach items="${imageList}" var="image" varStatus="loop">
            <c:set var="count" value="${count + 1}"/>
              [$.get('imagedisplay.html');,'http://','${image.imageTitle}','${image.imageDescription}']<c:if test="${fn:length(imageList) != count}"> <c:out value="${comma}"/> </c:if>            
            </c:forEach>
        ];

其中imageList是数据库中的图像列表。您可以在我提到的链接中看到Imagearray1的实际代码。

如何使用此图库显示图像?(或)如果有任何其他方式以幻灯片形式显示图像,请向我解释。

1 个答案:

答案 0 :(得分:0)

您需要创建一个servlet,它将图像内容从DB流式传输到HTTP响应,并沿着一组正确的响应头。非敏感的$.get('imagedisplay.html'); ajax调用必须由返回图像的servlet的URL替换,例如

var images = [
    <c:forEach items="${images}" var="image" varStatus="loop">
        ['imageservlet/${image.id}', '', '${image.imageTitle}', '${image.imageDescription}']${!loop.last ? ',' : ''}
    </c:forEach>
];

将您的图片servlet映射到/imageservlet/*的网址格式,并按request.getPathInfo()获取图片ID(或文件名),最后从数据库中选择InputStream并将其写入{ {1}}回复。您可以在此答案中找到一个基本示例:How to retrieve and display images from a database in a JSP page?