iteye_20747
2010-02-11 13:38
浏览 287
已采纳

关于JFreeChart 生成图片


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>/DisplayChart</url-pattern>
</servlet-mapping>

  <servlet>
    <servlet-name>JFreeChart</servlet-name>
    <servlet-class>test.JFreeChartServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>JFreeChart</servlet-name>
    <url-pattern>/JFreeChart</url-pattern>
  </servlet-mapping>
</web-app>
------------------------------------------------
JFreeChartServlet

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("初级程序员", 10000);
dataset.setValue("中级程序员", 23000);
dataset.setValue("高级程序员", 10000);
dataset.setValue("项目经理", 6000);
dataset.setValue("系统分析师", 6000);
dataset.setValue("软件架构师", 3000);
dataset.setValue("其他", 10000);
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图",dataset, true, false, false);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setStartAngle(150D);
plot.setDirection(Rotation.CLOCKWISE);
plot.setForegroundAlpha(0.5F);
plot.setNoDataMessage("无数据显示");
plot.setCircular(true);
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}:{1}={2}"));

//第一种 session方式
//String fileName = ServletUtilities.saveChartAsPNG(chart, 700, 400,
// null, request.getSession());
//String graphURL = request.getContextPath() + "/DisplayChart?filename=" + fileName;
//request.setAttribute("url", graphURL);
//request.getRequestDispatcher("index.jsp").forward(request, response);

//第二种 流输出方式
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);
}

-----------------------------------------------------------
jsp

//第一种 session方式
<%@ page contentType="text/html;"%>
<img src="<%=request.getAttribute("url")%>">

/第二种 流输出方式
<%@ page contentType="image/jpeg;"%>
<img src="<%=request.getContextPath()%>/JFreeChart">





流输出方式怎么不显示?
大家来看看

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • 拽拽的初行者 2010-02-20 16:33
    已采纳

    那就是:
    [code="java"]response.setContentType("image/jpeg"); [/code]

    已采纳该答案
    打赏 评论
  • nanlei1987 2010-02-11 13:38

    [code="java"]
    //获得OutputStream对象
    OutputStream os = response.getOutputStream();
    //以PNG格式向客户端输出
    ChartUtilities.writeChartAsPNG(os, chart, width, height);
    [/code]
    您试试看分开写怎么样。

    打赏 评论
  • wangwenhui11 2010-02-11 13:38

    response.setContentType("image/png");
    ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);

    打赏 评论
  • yhef 2010-02-11 13:38

    路径拿出来看看对不对。

    打赏 评论
  • 拽拽的初行者 2010-02-11 21:59

    明显是 第二种方式的 ContentType设置有误!!

    这是错误的!
    [quote][b]
    <%@ page contentType="image/jpeg;"%>
    /JFreeChart">
    /code]

    打赏 评论
  • 拽拽的初行者 2010-02-11 22:00

    应该是这样的:
    [code="xml"]
    <%@ page contentType="text/html;"%>

    打赏 评论
  • 拽拽的初行者 2010-02-20 14:41

    [color=blue][b]
    你总共有2个错误:

    1、与流方式对应的servlet采用的是POST的方法[/b][/color]

    [code="java"]/JFreeChart">
    [/code]

    [b]这样就清楚了!![/b]

    打赏 评论
  • 拽拽的初行者 2010-02-20 14:48

    [color=blue][b]更改建议,和你的错误相应:

    1、test.JFreeChartServlet的Servelt方法提供一个GET的入口。[/b][/color]

    [code="java"] public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request, response);
    }[/code]
    [color=blue][b]
    2、更改JSP的MIME设置:[/b][/color]

    [code="xml"]<%@ page contentType="text/html;"%>

    打赏 评论
  • 拽拽的初行者 2010-02-20 15:30

    我在Firefox中测试,你的项目不用修改,即可运行。

    但是在IE下有问题。

    更新下JfreeChart的jar包,更新到1.0.13,就没有问题了。

    PS:你的代码中,明显MIME有误,虽然不影响显示,但是还是用注意。

    [code="java"] response.setContentType("image/png");

        //第二种 流输出方式
        ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);[/code]
    

    改为:
    [code="java"] response.setContentType("image/jpeg");

        //第二种 流输出方式
        ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);[/code]
    
    打赏 评论
  • 拽拽的初行者 2010-02-20 15:33

    [b]
    更新jar包后,会产生中文乱码,这个要通过 设置字体 来解决[/b]

    打赏 评论

相关推荐 更多相似问题