在tomcat的temp文件夹中有好多图片,全是jfreechart生成的,能不让他生成文件的形式吗 
生产环境是weblogic应该也会用同样的问题

解决方案 »

  1.   

    <servlet>
        <servlet-name>DisplayChart</servlet-name>
        <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
      </servlet>
      <servlet>
        <servlet-name>statservlet</servlet-name>
        <servlet-class>stat.StatServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>DisplayChart</servlet-name>
        <url-pattern>/servlet/DisplayChart</url-pattern>
      </servlet-mapping><%@ page contentType="text/html; charset=UTF-8" %>
    <%@ page import = "java.io.PrintWriter" %>
    <%@ page import="stat.*"%>
    <%@ page import="org.jfree.data.category.*"%>
    <%@ page import="org.jfree.data.general.DefaultPieDataset"%>
    <%
    DefaultPieDataset dataset = (DefaultPieDataset)session.getAttribute("dataset");
    String fileName = ChartHandle.generatePieChart("访客浏览器统计", session, dataset, new PrintWriter(out));
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
    %>
    <HTML>
    <HEAD>
    <TITLE>访客浏览器统计</TITLE>
    </HEAD>
    <BODY>
    <P ALIGN="CENTER">
    <img src="<%=graphURL%>" width=500 height=300 border=0">
    </P>
    </BODY>
    </HTML>public class ChartHandle {
        /**
         * 根据传入的参数,生成饼图,并保存到文件中,返回文件名
         * @param title String 图形标题
         * @param session HttpSession
         * @param data CategoryDataset 数据集
         * @param pw PrintWriter 输出流
         * @return String 返回图形的文件名
         */
        public static String generatePieChart(String title, HttpSession session,
                                              DefaultPieDataset data,
                                              PrintWriter pw) {
            String filename = null;
            try {
                PiePlot plot = new PiePlot(data);
                //创建Plot图表区域对象,这里是饼图
                JFreeChart chart = new JFreeChart(title, //图形标题
                                                  JFreeChart.DEFAULT_TITLE_FONT, //标题字体
                                                  plot, //图标标题对象
                                                  true //是否显示图例
                                                  );
                //使用plot对象创建JFreeChart
                chart.setBackgroundPaint(java.awt.Color.white);
                //设置图形的背景色
                ChartRenderingInfo info = new ChartRenderingInfo(new
                    StandardEntityCollection());
                filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
                    session);
                //把生成的图片放到临时目录
                //500是图片长度,300是图片高度
                pw.flush();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            return filename;
        }