关于配置支持JFreeChart的Tomcat

第一步:安装J2SDK

1.         获取J2SDK的win32安装版文件:j2sdk-1_4_2-windows-i586.exe
2.         双击安装J2SDK
3.         配置JAVA环境变量:在administrator的用户变量里(估计在系统变量里面也可以),新建变量:JAVA_HOME=C:/j2sdk1.4.2(注意:C:/j2sdk1.4.2为JAVA文件的安装路径,你应该根据自己的安装路径进行更改),在PATH变量里添加JAVA可执行文件的路径%JAVA_HOME%/bin(这样你就可以在任何路径下执行java命令),新建变量:CLASSPATH=.;C:/j2sdk1.4.2/lib/tools.jar;C:/j2sdk1.4.2/lib/dt.jar

 

第二步:安装tomcat

1.         直接解压tomcat软件包
2.         启动tomcat:cd tomcat-home/bin,执行startup.bat文件(执行shutdown.bat关闭tomcat)
3.         测试tomcat是否启动成功:http://localhost:8080/index.jsp

 

第三步:配置JfreeChart

1.         http://www.jfree.org/jfreechart/下载JfreeChart开发包:jfreechart-0.9.21.zip
2.         将jfreechart-0.9.21.zip中的lib路径下的jar文件拷贝到tomcat的common/lib路径下
3.         修改tomcat的conf/web.xml文件,添加:

<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>

4.         测试demo文件:http://localhost:8080/jfreechart.jsp,当你看到图片就说明jfreechart配置成功啦!
jfreechart.jsp代码:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.JFreeChart"%>
<%@ page import="org.jfree.chart.plot.PiePlot"%>
<%@ page import="org.jfree.chart.ChartRenderingInfo"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="org.jfree.chart.encoders.SunPNGEncoderAdapter"%>

 

<%
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("六月", 500);
data.setValue("七月", 580);
data.setValue("八月", 828);

 

PiePlot plot = new PiePlot(data);
JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(java.awt.Color.white); //可选,设置图片背景色
chart.setTitle("Welcome to Jfreechart !"); //可选,设置图片标题

 

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
//500是图片长度,300是图片高度
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;

 

%>
<HTML>
<HEAD>
       <TITLE>Welcome to Jfreechart !</TITLE>
</HEAD>
<BODY>
<P ALIGN="CENTER">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
</P>
</BODY>
</HTML>

 

 

第四步:JfreeChart开发

由于JfreeChart的文档是收费的,所以基于JfreeChart的开发反编译它自带的demo jar文件是一个不错的开始吧(其实,一般的应用在它的例子里面可以找到的啊)。

 

第五步:移动到Linux平台问题

1.         图片显示问题:

把tomcat原封不动的搬到linux平台下,当我们请求http://localhost:8080/jfreechart.jsp时,将得到一个 “Can't connect to X11 window server using '127.0.0.1:0.0' as the value of the DISPLAY variable.”的错误。(郁闷吧)

解决办法:

export  CATALINA_OPTS="-Djava.awt.headless=true"

重启tomcat看看吧,出来啦!
2.         图片中文问题:
图片终于出现了,可是中文显示问题也随之而来(郁闷我了好久哦),
解决办法:
原来标准 jre/jdk 中只带了 redhat6 的 font.properties, 在 redhat7.3 和 redhat8.0 上都不能用。我们需要建一个 font.properties.zh.Redhat 放在 redhat 的 jre/lib 目录下。打开 /usr/lib/X11/fonts/ttf-zh 或者 /usr/share/fonts/zh_CN/TrueType (好像我是在后者发现的)下面的 font.dir, 将其中的一个中文字体名复制下来,比如: -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1,按照 java 的字体规则改为 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,将 font.properties.zh 中的内容复制到 font.properties.zh.Redhat 中(如果没找到font.properties.zh文件,就把后面的内容粘贴进去也可以啊,我是这样做的,简单!)。
至于选用字体 -misc-ZYSong18030-medium-r-normal--0-0-0-0-c-0-iso10646-1 是因为在 redhat 7.3 和 redhat 8.0 上都能用。因为 jre/jdk 找不到 Redhat 的 true type 字体,在文件 font.properties.zh.Redhat 最后加入:

appendedfontpath=/usr/lib/X11/fonts/ttf-zh

appendedfontpath=/usr/share/fonts/zh_CN/TrueType

将字体名全部替换成 -misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1,替换后的 font.properties.zh.Redhat 如下:
# @(#)font.properties.zh.Redhat.linux 1.4 02/06/10
#
# Copyright 2002 Sun Microsystems, Inc. All rights reserved.
#

 

# Component Font Mappings
#
serif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

serif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

sansserif.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

monospaced.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

 

dialog.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialog.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.italic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.bold.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

dialoginput.bolditalic.0=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
# Missing Glyph Character
#
default.char=274f

 

# Component Font Character Encodings
#
fontcharset.serif.0=sun.io.CharToByteISO8859_1
fontcharset.serif.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.sansserif.0=sun.io.CharToByteISO8859_1
fontcharset.sansserif.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.monospaced.0=sun.io.CharToByteISO8859_1
fontcharset.monospaced.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.dialog.0=sun.io.CharToByteISO8859_1
fontcharset.dialog.1=sun.awt.motif.CharToByteX11GBK

 

fontcharset.dialoginput.0=sun.io.CharToByteISO8859_1
fontcharset.dialoginput.1=sun.awt.motif.CharToByteX11GBK

 

# Exclusion Ranges
#

 

# XFontSet Information
#
fontset.serif.plain=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.italic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.bold=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.serif.bolditalic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.plain=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.italic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.bold=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.sansserif.bolditalic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.plain=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.italic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.bold=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.monospaced.bolditalic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.italic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.bold=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.bolditalic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialog.plain=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.italic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.bold=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.bolditalic=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

fontset.dialoginput.plain=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

#fontset.default=/
#-b&h-lucida-medium-r-normal-sans-*-%d-*-*-p-*-iso10646-1,/
#-tlc-song-medium-r-normal--*-%d-*-*-c-*-gbk-0

 

fontset.default=/
-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1

 

appendedfontpath=/usr/lib/X11/fonts/ttf-zh
appendedfontpath=/usr/share/fonts/zh_CN/TrueType
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置JFreeChart,您需要按照以下步骤进行操作: 1. 首先,您需要从JFreeChart的官方网站(http://www.jfree.org/jfreechart/download.html)下载最新版本的JFreeChart。 2. 在下载页面上,您将看到三个选项可供下载:JFreeChart、Documentation和JCommon。如果您只需要使用JFreeChart来生成统计图表,您只需要下载JFreeChart项目的压缩文件即可。如果您需要查看JFreeChart的API文档,您可以下载Documentation。而JCommon是JFreeChart所依赖的类库文件,如果您已经有了这些类库文件,那么可以选择不下载。 3. 下载完JFreeChart之后,您可以将其解压缩到您的项目目录中。 4. 接下来,您需要将JFreeChart的JAR文件添加到您的项目的构建路径中。具体操作方式取决于您使用的开发工具和构建系统。在大多数情况下,您只需将JAR文件拷贝到您的项目的lib目录下,并将其添加到构建路径中即可。 5. 一旦您完成了JFreeChart配置,您就可以开始使用它来生成统计图表了。根据您的需求,您可以使用JFreeChart来生成各种类型的图表,例如饼图、柱状图、散点图、时序图、甘特图等等。只需按照JFreeChart的API文档提供符合其所需格式的数据,即可自动生成相应的图表。这些图表可以直接输出为图片文件,也可以导出为PDF或Excel文档。 希望这些步骤能够帮助您成功配置和使用JFreeChart来生成统计图表。如果您需要更详细的说明,请参考JFreeChart的官方文档或社区资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值