java 表格为什么不显示_用jfreechart为什么显示不出来图表

运行的是教材上提供的最简单的demo程序,但运行后图片显示不出来,为什么?

可能出问题的几条语句:

...

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);

//filename代表生成的图表文件的名字,据说是临时文件,在硬盘上搜索了一下,没有发现相关文件

String url = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;

//url代表的是改图表文件的URL,但是对于"/servlet/DisplayChart?filename=" 这一部分现在还是不太理解?

%>

" width=500 height=300 border=0 usemap="#"> 

//显示图表

为什么这样说呢?

这是在后来运行另一个例子的时候得到的反证。

另一个程序:

pageEncoding="gb2312"%>

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();

%>

在这个例子里面没有用到web.xml,但是它用流输出了图表

我知道/servlet/DisplayChart是在web.xml文件中做了映射的,而且必须如下做:

DisplayChart

org.jfree.chart.servlet.DisplayChart

DisplayChart

/servlet/DisplayChart

我最开始没做这个映射所有不能显示,不过后来在做了这个映射以后还是不行,因为搞不懂上面"/servlet/DisplayChart?filename=" 的用法,所以对这个映射是否需要很是不解?答案是肯定需要这个映射的。

为什么所有语句都对了,还是不行了,怀着对映射的不惑看了一个以前的例子“Hello World”,奇怪的是这个例子也不能执行了,程序肯定是没错了,以前执行过,问题出在哪里?Eclipse?

太意外了,重启Tomcat就ok了!看来重启Tomcat就像重启电脑一样,很多意外都可以排除。

最后的疑问:"/servlet/DisplayChart?filename=" 这一部分现在还是不太理解?这算是什么?

request.getContextPath() + "/servlet/DisplayChart?filename=" + filename

request.getContextPath() //这是本应用程序的路径(/jfreechardemo1), filename//这是图表文件名(jfreechart-onetime-37063.jpeg),中间缺图表文件在应用中的路径,"/servlet/DisplayChart?filename="中的 /servlet/DisplayChart是要映射到DisplayChart类的,该类有什么作用?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值