代码如下:<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.jfree.data.category.*" %>
<%@ page import="org.jfree.chart.*" %>
<%@ page import="org.jfree.chart.plot.*" %>
<%@ page import="org.jfree.chart.servlet.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
response.setContentType("image/jpeg");

DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(610,"广州","猪肉");
dataset.addValue(540,"广州","牛肉");
dataset.addValue(320,"广州","羊肉");
dataset.addValue(370,"广州","鸡肉");
dataset.addValue(130,"广州","鱼肉");

JFreeChart chart=ChartFactory.createBarChart3D("BiangJi","销量","肉类",dataset,PlotOrientation.VERTICAL,false,false,false);
String fileName=ServletUtilities.saveChartAsJPEG(chart,500,300,null,session);
String serverName=request.getServerName();
String port=String.valueOf(request.getServerPort());

out.print(fileName+"---fileName<br/>");
out.print(serverName+"---serverName<br/>");
out.print(port+"---serverName<br/>");
String url="http://"+serverName+":"+port+request.getContextPath()+"/servlet/DisplayChart?fileName="+fileName;
out.print("url:"+url);
 %><img src="<%=url %>" width="500" height="300" usemap="#<%=fileName %>"></body>
</html>
web.xml中设置如下:<?xml version="1.0" encoding="UTF-8"?>
<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">
<servlet>
     <servlet-name>DisplayChart</servlet-name>
     <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet><servlet-mapping>
      <servlet-name>DisplayChart</servlet-name>
      <url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping></web-app>
图片就是显示不了,不知道为什么?请高手指点,谢谢

解决方案 »

  1.   

    import org.jfree.chart.ChartUtilities;
    init JFreeChart chart....String rfname = "1.jpg";
    String fileName = "d:/" + rfname;//保存到你的工程目录下的某个img文件夹 然后直接<img src="/projectname/img/1.jpg">ChartUtilities.saveChartAsJPEG(new File(fileName), chart, 900, 500);
      

  2.   

    把<url-pattern>/servlet/DisplayChart</url-pattern>
    改为<url-pattern>/DisplayChart</url-pattern>把String url="http://"+serverName+":"+port+request.getContextPath()+"/servlet/DisplayChart?fileName="+fileName;
    改为:String url="http://"+serverName+":"+port+request.getContextPath()+"/DisplayChart?fileName="+fileName;这样就应该行了!你试试!!!!
      

  3.   

    你的代码我就不修改了,我提供你一段代码,直接生成图片显示,无需经过文件<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ page import="org.jfree.data.category.*"%>
    <%@ page import="org.jfree.chart.*"%>
    <%@ page import="org.jfree.chart.plot.*"%>
    <%
      // 
      // From  http://www.java2000.net/viewthread.jsp?tid=2361
      // 老紫竹
      //
      out.clearBuffer();
      response.setContentType("image/jpeg");
      DefaultCategoryDataset dataset = new DefaultCategoryDataset();
      dataset.addValue(610, "广州", "猪肉");
      dataset.addValue(540, "广州", "牛肉");
      dataset.addValue(320, "广州", "羊肉");
      dataset.addValue(370, "广州", "鸡肉");
      dataset.addValue(130, "广州", "鱼肉");
      JFreeChart chart = ChartFactory.createBarChart3D("BiangJi", "销量", "肉类", dataset, PlotOrientation.VERTICAL, false, false,
          false);
      java.io.OutputStream os = response.getOutputStream();
      javax.imageio.ImageIO.write(chart.createBufferedImage(500, 300), "JPEG", os);
      os.flush();
      os.close();
    %>
      

  4.   

    把<url-pattern>/servlet/DisplayChart</url-pattern>中的/servlet去掉试试。你的相对目录可能有问题,你在运行时,出现什么错误提示?
      

  5.   

    lz的地址好像写错了
    应该是:
     String url= "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()()+"/servlet/DisplayChart?fileName="+fileName;