完整版见https://jadyer.github.io/ <%@ page language="java" pageEncoding="UTF-8"%> <%@ page import="org.jfree.data.general.DefaultPieDataset, org.jfree.chart.JFreeChart, org.jfree.chart.ChartFactory, org.jfree.chart.servlet.ServletUtilities"%> <% DefaultPieDataset dpd = new DefaultPieDataset(); dpd.setValue("管理人员", 25); dpd.setValue("市场人员", 25); dpd.setValue("开发人员", 45); dpd.setValue("其他人员", 10); JFreeChart chart = ChartFactory.createPieChart("某公司组织结构2D饼图", dpd, true, false, false); String fileName = ServletUtilities.saveChartAsPNG(chart, 1024, 768, session); String url = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName; %> <img src="<%=url%>" width="1024" height="768"/> <%-- ================================================================================================= org.jfree.chart.servlet.DisplayChart类继承了javax.servlet.http.HttpServlet。它的描述如下 Servlet used for streaming charts to the client browser from the temporary directory You need to add this servlet and mapping to your deployment descriptorin order to get it to work 翻译:这是一个Servlet,被用来以流的形式从临时目录中将图片发送到客户端浏览器上 为了让它能够工作,你需要在部署描述符(web.xml)增加这个servlet以及它的映射 由于我们需要在JSP页面中显示图片,所以就要在web.xml中映射好DisplayChart,如下所示: <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> ================================================================================================= ChartUtilities.writeChartAsJPEG()是面向Java Application的 ServletUtilities.saveChartAsPNG()是面向Web开发的 ================================================================================================= saveChartAsPNG()的返回值是生成的图片的名字,它所生成的图片会保存在服务器的临时目录下 Tomcat6的临时目录是D:/Program Files/tomcat6/temp目录 这里我们的Java代码是写在JSP页面中的 所以每访问或刷新一次页面时,都会在服务器临时目录中生成一张图片 图片的命名方式为【jfreechart-62412.png】 ================================================================================================= 当使用在web.xml中配置的名为DisplayChart的Servlet的时候 它会根据它的filename到服务器的临时目录中寻找图片,最后显示出来 所以应为DisplayChart指定filename参数,即【DisplayChart?filename=】部分是固定的 ================================================================================================= --%>