好久没做struts2,基本全忘光了。
今天碰到个以前没做过的东西,记录一下。
jsp页面上 <img src="showimage.action"> 这种方式来显示图片
配置文件如下:
<action name="showimage"
class="ImageTestAction" method="getImage">
<result name="success" type="stream">
<param name="contentType">image/png</param>
<param name="inputName">imageStream</param>
</result>
</action>
直接写<action name="showimage" class="ImageTestAction" method="getImage"></action>也行,不过在action中需要output.write显式的输出数据流,代码不是很友好。
action代码,配置result的方法
try {
ByteArrayOutputStream output = new ByteArrayOutputStream();
BufferedImage image = ImageIO.read(new File("c:\\1.png"));
ImageIO.write(image, "png", output);
this.imageStream = new ByteArrayInputStream(output.toByteArray());
return SUCCESS;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "fail";
}
action代码,不配置result的方法
try {
OutputStream out = response.getOutputStream();
BufferedImage image = ImageIO.read(new File("c:\\1.png"));
ByteArrayOutputStream imageout = new ByteArrayOutputStream();
boolean flag = ImageIO.write(image, "png", imageout);
byte[] imgData = imageout.toByteArray();
if(imgData != null){
out.write(imgData);
}
return null;
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
以前写img都是用文件系统,这次直接写到数据库里,还真是没这么搞过,小记一笔。