「Java/Tomcat/JFreeChartで動的にグラフを出力するサンプル」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
JFreeChartを使って、グラフを出力するサーブレットと、ウェブページにグラフを表示するサンプルです。
JFreeChartはJava用のグラフを出力するライブラリです。
* ■目次
#contents(fromhere=true)
* JFreeChartのセットアップ
** ダウンロード
- http://www.jfree.org/index.html
JFreeChartのサイトでぽちぽちクリックしていると、SourceForgeに移動しました。
- http://sourceforge.net/projects/jfreechart/files/
さらに「JFreeChart」のリンクをクリックすると色んなバージョンの番号が見えます。
今回は「1.0.14」を選んでみました。
- http://sourceforge.net/projects/jfreechart/files/1.%20JFreeChart/1.0.14/
zipファイルと、tar.gzファイルが選べたので今回は「jfreechart-1.0.14.zip」をダウンロードしました。
** インストール
1.ダウンロードしたファイルから、以下の2ファイルを取り出します。
>jcommon-1.0.17.jar
>jfreechart-1.0.14.jar
2.Tomcatプロジェクトの「/WEB-INF/lib」ディレクトリに上記のファイルをコピーします。
Tomcatは「/WEB-INF/lib」ディレクトリに配置したjarファイルをアプリケーションから利用出来るので、これだけでJFreeChartを利用する準備完了です。
** eclipseの設定
Tomcatのための設定は「/WEB-INF/lib」にjarファイルを配置すれば完了ですが、eclipseでもクラスパスにjarファイルを入れて上げないとコンパイルエラーが出て大変です。
eclipseのための設定は、eclipseから「/WEB-INF/lib」にコピーしたjarファイルを選択し、右クリックメニューから「ビルドパス→ビルドパスに追加」を選択すれば完了です。
これで、eclipseでJFreeChartアプリを開発出来る準備が整いました。
* サンプルアプリケーション
** サンプルサーブレット &ref(JFreeChartSample.java)
#highlight(java){{
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
/**
* [Tomcat] JFreeChartで動的にグラフを出力するサンプル。
*/
public class JFreeChartSample extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// コンテンツタイプ設定
response.setContentType("image/png");
// 円グラフのデータ作成
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("いちご", 1500);
data.setValue("オレンジ", 1500);
data.setValue("バナナ", 5000);
// JFreeChartオブジェクト作成
JFreeChart chart = new JFreeChart(new PiePlot(data));
// 円グラフ出力
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 200, 200);
// アウトプットストリームをフラッシュ
response.getOutputStream().flush();
}
}
}}
- 簡単な円グラフを出力するサーブレットなら簡単に出来ます。
- ポイントは2つで、1つは以下のコンテンツタイプ設定。
>// コンテンツタイプ設定
>response.setContentType("image/png");
コンテンツタイプを設定するとブラウザが「画像なんだな」とスムーズに判断してくれます。
- もう1つは、以下の円グラフ出力に使っているメソッド。
>// 円グラフ出力
>ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 200, 200);
この「writeChartAsPNG」を使うことで、レスポンスのアウトプットストリームにpngのイメージを出力しています。
一次的にファイルに保存する必要がないので便利です。
※「saveChartAsPNG」を使うと、「pngファイル」を実際のファイルに出力スルことができます。
** &ref(web.xml)
#highlight(){{
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- サーブレットの宣言 -->
<servlet>
<servlet-name>JFreeChartSample</servlet-name>
<servlet-class>JFreeChartSample</servlet-class>
</servlet>
<!-- サーブレットとurlのマッピング -->
<servlet-mapping>
<servlet-name>JFreeChartSample</servlet-name>
<url-pattern>/chart/piechart.png</url-pattern>
</servlet-mapping>
</web-app>
}}
- サーブレットのマッピングで、以下のように<url-pattern>に画像ファイル名を入れておくと、グラフを保存したい人に便利です。
><url-pattern>/chart/piechart.png</url-pattern>
- 画像ファイルの部分をワイルドカードにして、ファイル名をhtml側で自由に決めさせるのもいいでしょう。
><url-pattern>/chart/*</url-pattern>
* 動作確認
「http://localhost:8080/jfc/chart/piechart.png」にアクセスして以下の様なグラフが表示されれば成功です。
※「jfc」の部分にはコンテキストを設定してください。
&ref(piechart.png)
* サンプルアプリケーションその2 ウェブページ(jsp)にグラフを表示する
上記のサンプルでは、グラフ作成サーブレットのアドレスを直接叩いてグラフを表示しましたが、通常はウェブページの中に埋め込んで利用する方が多いと思います。
ウェブページにJFreeChartで作成したグラフを表示させるには、上記で動作確認に利用したアドレス「http://localhost:8080/jfc/chart/piechart.png」を表示するhtmlを作成します。
** サンプルJSP &ref(index.jsp)
#highlight(){{
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Tomcat] ウェブページにJFreeChartで動的に生成したグラフを表示する。</title>
</head>
<body>
<h1>[Tomcat] ウェブページにJFreeChartで動的に生成したグラフを表示する。</h1>
<img src='<%=request.getContextPath()%>/chart/piechart.png'>
<p>ウェブページにJFreeChartで動的に生成したグラフを表示するサンプルです。 </p>
</body>
</html>
}}
- サンプルJSPの肝は、以下のimgタグです。
><img src='<%=request.getContextPath()%>/chart/piechart.png'>
- imgタグの属性srcに、先ほど作成したグラフ作成サーブレットのアドレスを設定する事で、グラフ作成サーブレットにリクエストが飛んで、ウェブページの中に動的に生成したグラフが表示されます。
** 動作確認
「http://localhost:8080/jfc/」にアクセスして以下の様なグラフが表示されれば成功です。
※「jfc」の部分にはコンテキストを設定してください。
&ref(piechart02.png)
* サンプルダウンロード
- &ref(JFreeChartSample.java)
- &ref(web.xml)
- &ref(index.jsp)
* コメント(バグ、間違い、こんな情報が欲しい等ありましたら)
#pcomment(reply)
* アンケート(このページの情報はお役に立ちましたか?)
#tvote("役に立った[26]","役に立たない[6]","分かりにくい[5]","間違っている[1]")
JFreeChartを使って、グラフを出力するサーブレットと、ウェブページにグラフを表示するサンプルです。
JFreeChartはJava用のグラフを出力するライブラリです。
* ■目次
#contents(fromhere=true)
* JFreeChartのセットアップ
** ダウンロード
- http://www.jfree.org/index.html
JFreeChartのサイトでぽちぽちクリックしていると、SourceForgeに移動しました。
- http://sourceforge.net/projects/jfreechart/files/
さらに「JFreeChart」のリンクをクリックすると色んなバージョンの番号が見えます。
今回は「1.0.14」を選んでみました。
- http://sourceforge.net/projects/jfreechart/files/1.%20JFreeChart/1.0.14/
zipファイルと、tar.gzファイルが選べたので今回は「jfreechart-1.0.14.zip」をダウンロードしました。
** インストール
1.ダウンロードしたファイルから、以下の2ファイルを取り出します。
>jcommon-1.0.17.jar
>jfreechart-1.0.14.jar
2.Tomcatプロジェクトの「/WEB-INF/lib」ディレクトリに上記のファイルをコピーします。
Tomcatは「/WEB-INF/lib」ディレクトリに配置したjarファイルをアプリケーションから利用出来るので、これだけでJFreeChartを利用する準備完了です。
** eclipseの設定
Tomcatのための設定は「/WEB-INF/lib」にjarファイルを配置すれば完了ですが、eclipseでもクラスパスにjarファイルを入れて上げないとコンパイルエラーが出て大変です。
eclipseのための設定は、eclipseから「/WEB-INF/lib」にコピーしたjarファイルを選択し、右クリックメニューから「ビルドパス→ビルドパスに追加」を選択すれば完了です。
これで、eclipseでJFreeChartアプリを開発出来る準備が整いました。
* サンプルアプリケーション
** サンプルサーブレット &ref(JFreeChartSample.java)
#highlight(java){{
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
/**
* [Tomcat] JFreeChartで動的にグラフを出力するサンプル。
*/
public class JFreeChartSample extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// コンテンツタイプ設定
response.setContentType("image/png");
// 円グラフのデータ作成
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("いちご", 1500);
data.setValue("オレンジ", 1500);
data.setValue("バナナ", 5000);
// JFreeChartオブジェクト作成
JFreeChart chart = new JFreeChart(new PiePlot(data));
// 円グラフ出力
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 200, 200);
// アウトプットストリームをフラッシュ
response.getOutputStream().flush();
}
}
}}
- 簡単な円グラフを出力するサーブレットなら簡単に出来ます。
- ポイントは2つで、1つは以下のコンテンツタイプ設定。
>// コンテンツタイプ設定
>response.setContentType("image/png");
コンテンツタイプを設定するとブラウザが「画像なんだな」とスムーズに判断してくれます。
- もう1つは、以下の円グラフ出力に使っているメソッド。
>// 円グラフ出力
>ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, 200, 200);
この「writeChartAsPNG」を使うことで、レスポンスのアウトプットストリームにpngのイメージを出力しています。
一次的にファイルに保存する必要がないので便利です。
※「saveChartAsPNG」を使うと、「pngファイル」を実際のファイルに出力スルことができます。
** &ref(web.xml)
#highlight(){{
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- サーブレットの宣言 -->
<servlet>
<servlet-name>JFreeChartSample</servlet-name>
<servlet-class>JFreeChartSample</servlet-class>
</servlet>
<!-- サーブレットとurlのマッピング -->
<servlet-mapping>
<servlet-name>JFreeChartSample</servlet-name>
<url-pattern>/chart/piechart.png</url-pattern>
</servlet-mapping>
</web-app>
}}
- サーブレットのマッピングで、以下のように<url-pattern>に画像ファイル名を入れておくと、グラフを保存したい人に便利です。
><url-pattern>/chart/piechart.png</url-pattern>
- 画像ファイルの部分をワイルドカードにして、ファイル名をhtml側で自由に決めさせるのもいいでしょう。
><url-pattern>/chart/*</url-pattern>
* 動作確認
「http://localhost:8080/jfc/chart/piechart.png」にアクセスして以下の様なグラフが表示されれば成功です。
※「jfc」の部分にはコンテキストを設定してください。
&ref(piechart.png)
* サンプルアプリケーションその2 ウェブページ(jsp)にグラフを表示する
上記のサンプルでは、グラフ作成サーブレットのアドレスを直接叩いてグラフを表示しましたが、通常はウェブページの中に埋め込んで利用する方が多いと思います。
ウェブページにJFreeChartで作成したグラフを表示させるには、上記で動作確認に利用したアドレス「http://localhost:8080/jfc/chart/piechart.png」を表示するhtmlを作成します。
** サンプルJSP &ref(index.jsp)
#highlight(){{
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[Tomcat] ウェブページにJFreeChartで動的に生成したグラフを表示する。</title>
</head>
<body>
<h1>[Tomcat] ウェブページにJFreeChartで動的に生成したグラフを表示する。</h1>
<img src='<%=request.getContextPath()%>/chart/piechart.png'>
<p>ウェブページにJFreeChartで動的に生成したグラフを表示するサンプルです。 </p>
</body>
</html>
}}
- サンプルJSPの肝は、以下のimgタグです。
><img src='<%=request.getContextPath()%>/chart/piechart.png'>
- imgタグの属性srcに、先ほど作成したグラフ作成サーブレットのアドレスを設定する事で、グラフ作成サーブレットにリクエストが飛んで、ウェブページの中に動的に生成したグラフが表示されます。
** 動作確認
「http://localhost:8080/jfc/」にアクセスして以下の様なグラフが表示されれば成功です。
※「jfc」の部分にはコンテキストを設定してください。
&ref(piechart02.png)
* サンプルダウンロード
- &ref(JFreeChartSample.java)
- &ref(web.xml)
- &ref(index.jsp)
* コメント(バグ、間違い、こんな情報が欲しい等ありましたら)
#pcomment(reply)
* アンケート(このページの情報はお役に立ちましたか?)
#tvote("役に立った[27]","役に立たない[6]","分かりにくい[5]","間違っている[1]")