用Servlet在客户端显示图像显示不出~
import java.awt.Color;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageServlet extends HttpServlet {
private static final String CONTENT_TYPE="image/jpeg";
public int DataArray[]={120,100,60,200};
public int Total=480;
public Component dummy;
public ImageServlet()
{
super();
}
public void init(ServletConfig cfg) throws ServletException
{
super.init(cfg);
dummy=new Frame();
dummy.addNotify();
}
public void destroy()
{
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//request.i
response.setContentType(CONTENT_TYPE);
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
Color fg=new Color(255,255,0);
Color bg=new Color(255,100,0);
Color fill=new Color(155,155,155);
if(request.getParameter("ChartType").equals("pie"))
sendImage(response,createPieChart(300,300,fg,bg,fill));
}
public BufferedImage createPieChart(int w,int h,Color fg,Color bg, Color fill)
{
int done=0,arc=0;
BufferedImage img=createImage(w,h,bg);
Graphics g=img.getGraphics();
for(int i=0;i<DataArray.length;i++)
{
done+=DataArray[i];
int newArc=(done*360)/Total;
g.setColor(new Color(255,50,50*i));
g.fillArc(0, 0, w-1, h-1, arc,newArc);
arc=newArc;
}
return img;
}
public BufferedImage createImage(int w,int h,Color bg)
{
BufferedImage img =new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics g=img.getGraphics();
g.setColor(bg);
g.fillRect(0, 0, w, h);
return img;
}
public void sendImage(HttpServletResponse res , BufferedImage img )
{
try
{
JPEGImageEncoder encoder;
ByteArrayOutputStream byteOut=new ByteArrayOutputStream();
OutputStream Out=res.getOutputStream();
encoder=JPEGCodec.createJPEGEncoder(byteOut);
encoder.encode(img);
byte[] buf=byteOut.toByteArray();
byteOut.close();
res.setContentLength(buf.length);
Out.write(buf);
Out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
/***********/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tet.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<SCRIPT LANGUAGE="JavaScript">
document.onclick=fnClick;
function fnClick()
{
if(event.srcElement.id=="pie")
{
chart.src="ImageServlet? ChartType=Pie";
chart.width="300";
chart.hetght="300";
}
else if(event.srcElement.id=="bar")
{
chart.src="ImageServlet? ChartType=Bar";
chart.height="110";
}
}
</script>
<body>
<span id=pie style="cursor:hand;">饼形图</span>
<img id=chart width=300 height=300>
</body>
</html>