给出关键代码以供楼主参考。这是生成图片文件的Servlet中的代码: JFreeChart chart = ...;//获取图表
String chartSrc = "chart.jpg";//图片名称
//以下这句代码可以解决楼主第一个问题:控制图片生成路径,使图片生成在工程目录中。
String realPath = getServletContext().getRealPath( chartSrc );
//生成图片
FileOutputStream out = new FileOutputStream( realPath );
ChartUtilities.writeChartAsJPEG(out, chart, 600, 400, info);
out.close();
//把图片路径保存到request中,以便在页面上使用
request.setAttribute("chartSrc", chartSrc);
//转发到显示图片的页面
request.getRequestDispatcher("xxx.jsp").forward(request, response);
这是JSP中显示图片的代码:
<img style="border:none;" src="${ chartSrc }" />

解决方案 »

  1.   

    [接2楼]
    哦,多删了一句!
    生成图片的那句代码中的 info 是这样创建的:
    ChartRenderingInfo info = new ChartRenderingInfo();
      

  2.   

    关键源码如下
       File file = new File(System.getProperty("java.io.tmpdir"), filename);
            if (!file.exists()) {
                throw new ServletException("File '" + file.getAbsolutePath()
                        + "' does not exist");
            }从上面源码可以看出,通过设置jvm变量即可
      

  3.   

    呵呵,思路不一样,还是accp206 的实现好,因为tomcat没准还要用java.io.tmpdir这个属性呢.
      

  4.   

    路径与web.xml配置有关系 
    web.xml配置文件<servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/image/Chart</url-pattern>
    </servlet-mapping>jsp代码<jsp:useBean id="barchart01" scope="session"
     class="com.chart.SeriesXY" />
    <%
     String fileName = barchart01.getImg(request.getSession(), out);
     String graphURL = request.getContextPath()
       + "/image/Chart?filename=" + fileName;
    %>
    <br/>
    <img src="<%= graphURL %>" border="0" usemap="#<%=fileName %>" />
    <br/>
      

  5.   

    <servlet>
      <servlet-name>DisplayChart</servlet-name>
      <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>