「Java/Tomcat/JFreeChartで動的にグラフを出力するサンプル」の編集履歴(バックアップ)一覧はこちら

Java/Tomcat/JFreeChartで動的にグラフを出力するサンプル」(2024/04/10 (水) 13:49:19) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

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]")

表示オプション

横に並べて表示:
変化行の前後のみ表示: