1、jsp部分
<img src="retrievePhotoAction.action?id=${photo.id}">
2、action部分
@Autowired(required = true) @Qualifier("productManager")
private ProductManager productManager;
private Integer id;
private InputStream targetFile;
public InputStream getTargetFile(){
return this.targetFile;
}
public void setId(Integer id) {
this.id = id;
}
@Action(value="retrievePhotoAction",results={
@Result(type="stream",name="success",params={
"inputName","targetFile","contentDisposition","attachment;filename=fileName",
"contentCharSet","UTF-8","bufferSize","4096"})
})
public String execute() throws Exception {
this.targetFile = productManager.retrievePhotoToFile(id);
return "success";
3、service部分
Session session = this.sessionFactory.getCurrentSession();
Photo ph = (Photo)session.load(Photo.class, photoId);
Blob image = ph.getImage();
HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("contentType", ph.getContentType());
InputStream is=null, result=null;
try {
is = image.getBinaryStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[102400];
int len;
while((len=is.read(buf))!=-1){
baos.write(buf,0,len);
}
is.close();
baos.close();
byte[] ba = baos.toByteArray();
result = (InputStream) new ByteArrayInputStream(ba);
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
本文介绍了一种通过JSP页面展示数据库中图片的方法,利用Struts2框架的stream结果类型直接将图片数据输出到浏览器。该方案涉及从数据库读取图片数据、设置HTTP响应头以及配置Struts2的Action。
224

被折叠的 条评论
为什么被折叠?



