在我的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个图像,任何帮助都会很明显
答案 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