Tomcat下使用Jfreechart 简单例子(servlet)

2016-02-19 15:33 2 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

  这个例子是我参考JFreeChart Developer Guide做的.用Google搜一下,可以下载到.

  1.Tomcat的安装不描述.现在假如Tomcat 安装目录为C:Tomcat 5.0,新建C: Tomcat 5.0 webapps  myServlets目录.

  安装JDK  安装目录C:j2sdk1.4.2_09 并将C:j2sdk1.4.2_09libjfreechart-1.0.0-rc1.jar加到CLASSPATH中.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  2.去http://www.jfree.org/jfreechart/index.php下载jfreechart-1.0.0-rc1,后解压缩,将jfreechart-1.0.0-rc1.jar,jcommon-1.0.0-rc1.jar,gnujaxp.jar,放到C: Tomcat 5.0webapps  myServletsWEB-INFlib下 和 C: j2sdk1.4.2_09lib下.

  3.新建index.html 放到C: Tomcat 5.0  webapps  myServlets下

  

HTML
HEADER
TITLEJFreeChart 简单的例子/TITLE
/HEADER
BODY
H2JFreeChart: 简单的例子/H2
P

  下面有两个简单的例子,调用servlet,生成统计图.

  

ul
li条形统计图a
href="servlet/ServletDemo1"条形统计图/a;/li
li可以选择统计图类型 a
href="chart.html"三种类型/a.
/li
/ul
/BODY
/HTML

  4.新建Chart.html 放到C: Tomcat 5.0  webapps  myServlets下

  

HTML
HEADER
TITLEJFreeChart Servlet Demo 2/TITLE
/HEADER
BODY
H2JFreeChart Servlet Demo/H2
P
Please choose a chart type:
FORM ACTION="servlet/ServletDemo2" METHOD=POST
INPUT TYPE="radio" NAME="chart" VALUE="pie" CHECKED Pie Chart
INPUT TYPE="radio" NAME="chart" VALUE="bar" Bar Chart
INPUT TYPE="radio" NAME="chart" VALUE="time" Time Series Chart
P
INPUT TYPE="submit" VALUE="Generate Chart"
/FORM
/BODY
/HTML

  5.新建ServletDemo1.java 并用JDK编译成class 文件,当然要将C:  j2sdk1.4.2_09  lib  jfreechart-1.0.0-rc1.jar加到CLASSPATH中,才能正确编译.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  

package com.jrefinery.chart.demo;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class ServletDemo1 extends HttpServlet {
public ServletDemo1() {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "S1", "C1");
dataset.addValue(4.0, "S1", "C2");
dataset.addValue(15.0, "S1", "C3");
dataset.addValue(14.0, "S1", "C4");
dataset.addValue(-5.0, "S2", "C1");
dataset.addValue(-7.0, "S2", "C2");
dataset.addValue(14.0, "S2", "C3");
dataset.addValue(-3.0, "S2", "C4");
dataset.addValue(6.0, "S3", "C1");
dataset.addValue(17.0, "S3", "C2");
dataset.addValue(-12.0, "S3", "C3");
dataset.addValue( 7.0, "S3", "C4");
dataset.addValue(7.0, "S4", "C1");
dataset.addValue(15.0, "S4", "C2");
dataset.addValue(11.0, "S4", "C3");
dataset.addValue(0.0, "S4", "C4");
dataset.addValue(-8.0, "S5", "C1");
dataset.addValue(-6.0, "S5", "C2");
dataset.addValue(10.0, "S5", "C3");
dataset.addValue(-9.0, "S5", "C4");
dataset.addValue(9.0, "S6", "C1");
dataset.addValue(8.0, "S6", "C2");
dataset.addValue(null, "S6", "C3");
dataset.addValue(6.0, "S6", "C4");
dataset.addValue(-10.0, "S7", "C1");
dataset.addValue(9.0, "S7", "C2");
dataset.addValue(7.0, "S7", "C3");
dataset.addValue(7.0, "S7", "C4");
dataset.addValue(11.0, "S8", "C1");
dataset.addValue(13.0, "S8", "C2");
dataset.addValue(9.0, "S8", "C3");
dataset.addValue(9.0, "S8", "C4");
dataset.addValue(-3.0, "S9", "C1");
dataset.addValue(7.0, "S9", "C2");
dataset.addValue(11.0, "S9", "C3");
dataset.addValue(-10.0, "S9", "C4");
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart",
"Category",
"Value",
dataset,
PlotOrientation.VERTICAL,
true, true, false
);
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {
out.close();
}
}
}

  6.新建ServletDemo2 .java 并用JDK编译

  

package com.jrefinery.chart.demo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo2 extends HttpServlet {
public ServletDemo2() {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = new PrintWriter(response.getWriter());
try {
String param = request.getParameter("chart");
response.setContentType("text/html");
out.println("HTML");
out.println("HEAD");
out.println("TITLEJFreeChart Servlet Demo 2/TITLE");
out.println("/HEAD");
out.println("BODY");
out.println("H2JFreeChart Servlet Demo/H2");
out.println("P");
out.println("Please choose a chart type:");
out.println("FORM ACTION="ServletDemo2" METHOD=POST");
String pieChecked = (param.equals("pie") ? " CHECKED" : "");
String barChecked = (param.equals("bar") ? " CHECKED" : "");
String timeChecked = (param.equals("time") ? " CHECKED" : "");
out.println("INPUT TYPE="radio" NAME="chart" VALUE="pie""+ pieChecked + " Pie Chart");
out.println("INPUT TYPE="radio" NAME="chart" VALUE="bar""+ barChecked + " Bar Chart");
out.println("INPUT TYPE="radio" NAME="chart" VALUE="time""+ timeChecked + " Time Series Chart");
out.println("P");
out.println("INPUT TYPE="submit" VALUE="Generate Chart"");
out.println("/FORM");
out.println("P");
out.println("IMG SRC="ServletDemo2ChartGenerator?type="+ param + "" BORDER=1 WIDTH=800 HEIGHT=600/");
out.println("/BODY");
out.println("/HTML");
out.flush();
out.close();
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {
out.close();
}
}
}

  7.新建ServletDemo2ChartGenerator .java 并用JDK编译.

  

package com.jrefinery.chart.demo;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.*;
import org.jfree.data.general.*;
import org.jfree.data.time.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class ServletDemo2ChartGenerator extends HttpServlet {
public ServletDemo2ChartGenerator() {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
String type = request.getParameter("type");
JFreeChart chart = null;
if (type.equals("pie")) {
chart = createPieChart();
}
else if (type.equals("bar")) {
chart = createBarChart();
}
else if (type.equals("time")) {
chart = createTimeSeriesChart();
}
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 800, 600);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {
out.close();
}
}
private JFreeChart createPieChart() {
// create a dataset...
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("One", new Double(43.2));
data.setValue("Two", new Double(10.0));
data.setValue("Three", new Double(27.5));
data.setValue("Four", new Double(17.5));
data.setValue("Five", new Double(11.0));
data.setValue("Six", new Double(19.4));
JFreeChart chart = ChartFactory.createPieChart(
"Pie Chart",
data,
true, true, false
);
return chart;
}
private JFreeChart createBarChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "S1", "C1");
dataset.addValue(4.0, "S1", "C2");
dataset.addValue(15.0, "S1", "C3");
dataset.addValue(14.0, "S1", "C4");
dataset.addValue(-5.0, "S2", "C1");
dataset.addValue(-7.0, "S2", "C2");
dataset.addValue(14.0, "S2", "C3");
dataset.addValue(-3.0, "S2", "C4");
dataset.addValue(6.0, "S3", "C1");
dataset.addValue(17.0, "S3", "C2");
dataset.addValue(-12.0, "S3", "C3");
dataset.addValue( 7.0, "S3", "C4");
dataset.addValue(7.0, "S4", "C1");
dataset.addValue(15.0, "S4", "C2");
dataset.addValue(11.0, "S4", "C3");
dataset.addValue(0.0, "S4", "C4");
dataset.addValue(-8.0, "S5", "C1");
dataset.addValue(-6.0, "S5", "C2");
dataset.addValue(10.0, "S5", "C3");
dataset.addValue(-9.0, "S5", "C4");
dataset.addValue(9.0, "S6", "C1");
dataset.addValue(8.0, "S6", "C2");
dataset.addValue(null, "S6", "C3");
dataset.addValue(6.0, "S6", "C4");
dataset.addValue(-10.0, "S7", "C1");
dataset.addValue(9.0, "S7", "C2");
dataset.addValue(7.0, "S7", "C3");
dataset.addValue(7.0, "S7", "C4");
dataset.addValue(11.0, "S8", "C1");
dataset.addValue(13.0, "S8", "C2");
dataset.addValue(9.0, "S8", "C3");
dataset.addValue(9.0, "S8", "C4");
dataset.addValue(-3.0, "S9", "C1");
dataset.addValue(7.0, "S9", "C2");
dataset.addValue(11.0, "S9", "C3");
dataset.addValue(-10.0, "S9", "C4");
JFreeChart chart = ChartFactory.createBarChart3D(
"Bar Chart",
"Category",
"Value",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
return chart;
}
private JFreeChart createTimeSeriesChart() {
// here we just populate a series with random data...
TimeSeries series = new TimeSeries("Random Data");
Day current = new Day(1, Month.JANUARY, 2001);
for (int i = 0; i 100; i++) {
series.add(current, Math.random() * 100);
current = (Day) current.next();
}
XYDataset data = new TimeSeriesCollection(series);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Time Series Chart",
"Date",
"Rate",
data,
true,
true,
false
);
return chart;
}
}

  8,如果顺利,通过5.6.7步,我们手上有会有三个CLASS文件.我们将这三个CLASS文件拷到C:  Tomcat 5.0  webapps  myServlets  WEB-INF  classescom  jrefinery  chart   demo目录下

  9.新建WEB.XML拷贝到C:  Tomcat 5.0   webapps   myServlets   WEB-INF下

  

?xml version="1.0" encoding="ISO-8859-1"?
!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"
web-app
servlet
servlet-name
ServletDemo1
/servlet-name
servlet-class
com.jrefinery.chart.demo.ServletDemo1
/servlet-class
/servlet
servlet
servlet-name
ServletDemo2
/servlet-name
servlet-class
com.jrefinery.chart.demo.ServletDemo2
/servlet-class
/servlet
servlet
servlet-name
ServletDemo2ChartGenerator
/servlet-name
servlet-class
com.jrefinery.chart.demo.ServletDemo2ChartGenerator
/servlet-class
/servlet
servlet-mapping
servlet-nameServletDemo1/servlet-name
url-pattern/servlet/ServletDemo1/url-pattern
/servlet-mapping
servlet-mapping
servlet-nameServletDemo2/servlet-name
url-pattern/servlet/ServletDemo2/url-pattern
/servlet-mapping
servlet-mapping
servlet-nameServletDemo2ChartGenerator/servlet-name
url-pattern/servlet/ServletDemo2ChartGenerator/url-pattern
/servlet-mapping
/web-app

  10.重启TOMCAT http://172.25.49.1:8080/myServlets/  .

  最后:小心上面的拷贝路径,不知道为什么斜杠出不来

  我参考JFreeChart Developer Guide中的例子,我发现生成统计图真的很漂亮,由于我是JAVA初学者,其中的很多东西我也是直接拷贝过来,不过上面代码应该是没有问题的,能正常运行.

来源:https://www.tulaoshi.com/n/20160219/1609894.html

延伸阅读
标签: Java JAVA基础
  (四)Tomcat 1、用WinZIP等解压缩软件把tomcat.zip解压缩到一个目录下,我把它解压缩到C:\,它会自动 创建tomcat子目录,这样在C盘就多了一个目录C:/tomcat,我用$TOMCAT标识; 2、打开$APACHE_ROOT\conf\httpd.conf文件,在该文件最后加上类似这样一句话: Include $TOMCAT/etc/t...
标签: Java JAVA基础
修订版 安装jdk1.3 注意: 如果你安装过1.3之前的java版本,请删除该版本的所有文件,并用rregedit删除 HKEY_LOCAL_MACHINE\software\javasoft下面所有内容。 然后再安装jdk1.3 请这里下载jdk1.3: http://www.chinaasp.com/download/readFolder.asp?folder=JspDev&name=JSP%BF%AA%B7%A2%B0%FC 然后注意如果你的系统是中文系统,系统...
在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。 本质上,浏览器向服务器请求静态图片如jpeg时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image/jpeg而已,因此,我们在Servlet中...
标签: Java JAVA基础
      本文介绍了Java Servlet编程所需的软件及环境配置。只要你有一台安装Windows 95/98了的PC机,便可以按照本文的步骤开发Servlet程序了。本文同时给出了通过Java Servlet向用户的硬盘写入和读取Cookie的方法及例程。通过它可以实现网上常见的个性化网页、网上购物篮、密码验证等。 Java Servlet是运行于W...
标签: 服务器
CentOS下安装配置Tomcat环境   CentOS下安装配置Tomcat 演示环境 系统:Linux CentOS 6.3 32位 环境:无安装apache、php、mysql 账号:Root 一、下载相关安装包 注:可以先进入 #cd /usr/local/ /进里面后再下载(也可以根据自己情况而定) 1、下载jdk 2、下载Tomcat 二、安装JDK和Tomcat...

经验教程

484

收藏

59
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部