在bean中
public static String generatePieChart( HttpSession session, PrintWriter pw)
     {
         String filename = null;
         Font font;
         String title="发撒撒撒播";
         try {
                 //  建立PieDataSet
         DefaultPieDataset data = new DefaultPieDataset();
         data.setValue("发包", 60);
         data.setValue("usa", 10);
         data.setValue("japan", 30);         JFreeChart chart = ChartFactory.createPieChart(
     title,
     data,
true,
true,
false);
             //  生成chart物件
         PiePlot plot = new PiePlot(data);
         plot.setToolTipGenerator(new StandardPieToolTipGenerator());
         font=new Font("黑体",Font.CENTER_BASELINE,20);//这个地方是设置统计图标题的字体和大小
         TextTitle tt=new TextTitle(title);
         tt.setFont(font);
         chart.setBackgroundPaint(java.awt.Color.white);//统计图片的底色
         chart.setTitle(tt);
         //  把生成的文件写入到临时的目录中
         ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
         filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,info, session);
//选择存储成png格式的文件,当然你也可以使用saveChartAsJPEG的方法生成jpg图片
         //  把image map 写入到 PrintWriter
         ChartUtilities.writeImageMap(pw, filename, info, false);
         System.out.println("已完成图生成,filename=" + filename);
         System.out.println(info);
         System.out.println(pw);
         pw.flush();
         
         }
         catch (Exception ex) {
         System.out.println("error:"+ex.getMessage());
         }
         return filename;
         }
}在jsp中
 <%
String filename = Test.generatePieChart(session, new PrintWriter(out));
out.println(filename);
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
out.println(graphURL);
%>

     <img src="<%=graphURL%>" width=500 height=300 border=0 usemap="#<%= filename %>"></div></td>我写的对吗??为什么什么也不显示亚???

解决方案 »

  1.   

    有没有在 web.xml中配置/servlet/DisplayChart 这个servlet啊?
      

  2.   

    这样可能不行,因为当你把页面加载完后,图像还没有生成好,所以就显示不出来,为什么不用流来生成呢?
    代码:
    ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1f, chart, IMGWIDTH, IMGHEIGHT, null);
      

  3.   

    确定程序成功运行了吗?输出已完成图生成,filename=" + filename了吗?try catch一下看看有没有一场
      

  4.   

    这样可能不行,因为当你把页面加载完后,图像还没有生成好,所以就显示不出来,为什么不用流来生成呢?
    代码:
    ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1f, chart, IMGWIDTH, IMGHEIGHT, null);