import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageAction {
private InputStream input;
public InputStream getInput() {
return input;
}
public void setInput(InputStream input) {
this.input = input;
}
public String execute() {
try {
drawImage();
} catch (ImageFormatException e) {
return "fail";
} catch (IOException e) {
return "fail";
}
return "success";
}
private void drawImage() throws ImageFormatException, IOException {
BufferedImage image = new BufferedImage(300, 400,
BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();
Random random = new Random();
graphics.setColor(new Color(random.nextInt(255), random.nextInt(255),
random.nextInt(255)));
graphics.fill3DRect(0, 0, 300, 400, true);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
JPEGCodec.createJPEGEncoder(stream).encode(image);
input = new ByteArrayInputStream(stream.toByteArray());
}
}
<?xml version="1.0" encoding="GB18030"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="" extends="struts-default"> <action name="image" class="ImageAction"> <result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">input</param> </result> <result name="fail" > / </result> </action> </package> </struts><?xml version="1.0" encoding="GB18030"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
<?xml version="1.0" encoding="GB18030"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="" extends="struts-default"> <action name="image" class="ImageAction"> <result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">input</param> </result> <result name="fail" > / </result> </action> </package> </struts><?xml version="1.0" encoding="GB18030"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>