如何使用struts2和hibernate显示多个图像

时间:2017-03-23 06:23:33

标签: hibernate struts2

在我的jsp中

 <img src="<s:url value="image" />" />

in xml

<action name="image"
            class="com.sms.UserImagedisplay">
</action>

在控制器类中,从数据库中获取图像

byte [] itemImage = null;

    HttpServletResponse response = ServletActionContext.getResponse();
    response.reset();
    response.setContentType("multipart/form-data");
for (userimage usersimages : getusersimages) {
            itemImage = usersimages.getActualimage();

        }

try {
        OutputStream out = response.getOutputStream();
                out.write(itemImage);
                out.flush();
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }

此代码适用于单张图片,但如何显示多张图片

我试过这段代码,但它只显示一张图片

List<byte[]>  itemImage = new ArrayList<byte[]>();

for (byte[] bs : itemImage) {
    HttpServletResponse response = ServletActionContext.getResponse();
    response.reset();
    response.setContentType("multipart/form-data");
        try {

            OutputStream out = response.getOutputStream();
            out.write(bs);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

}

即使列表的大小是两个,我也无法显示超过1个图像,任何帮助都会很明显

1 个答案:

答案 0 :(得分:1)

每个图像/文件都必须拥有自己的数据流。因此,您可以将您的操作和jsp修改为以下内容:

<s:url action="image" id="imageUrl">
    <s:param name="index">0</s:param>
</s:url>
<img src="<s:property value='%{imageUrl}'>"/>

您的操作必须接受此index - 参数,您可以从阵列中选择图像。

class MyAction extends ActionSupport {
    private int index;

    public String execute() {
        ...
        byte[] bs = itemImage[index];
        ...
    }
    //getter/setter
}

只是一个侧节点:您正在使用struts,请考虑使用struts流结果(doc),而不是直接操作OutputStream。这是一个类似的问题,答案如何使用它:View image in JSP page from MySQL using Struts 2