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>