<servlet>
<servlet-name>ChartServlet</servlet-name>
<servlet-class>request.requestMstRegist.test.ChartServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ChartServlet</servlet-name>
<url-pattern>/servlet/Chart</url-pattern>
</servlet-mapping>
ChartServlet
package request.requestMstRegist.test;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ChartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = request.getRequestDispatcher("../temp/chart.jsp");
dispatcher.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
chart.jsp
<%@page contentType="text/html; charset=UTF-8" %> <jsp:useBean id="chart" class="request.requestMstRegist.test.Chart"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <table> <tr><td align="center" width="1200"><h1>Chart.jsp</h1></td></tr> <tr><td align="center"><img src="<%= "../temp/" + chart.getBarChartName() %>" alt="test image" usemap="#test" border="0"/></td></tr> <tr><td align="center"><img src="<%= "../temp/" + chart.getLineChartName() %>" alt="test image" usemap="#test" border="0"/></td></tr> </table> </body> </html>
Chart.java
package request.requestMstRegist.test;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpSession;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.DefaultCategoryDataset;
/**
* 棒グラフのサンプル
*/
public class Chart extends ServletUtilities {
String barChartName;
String lineChartName;
private DefaultCategoryDataset getBarChartDataSet() {
// 表示するデータの作成
String series1 = "第一";
String series2 = "第二";
String series3 = "第三";
// カテゴリーの設定
String category1 = "カテゴリー 1";
String category2 = "カテゴリー 2";
String category3 = "カテゴリー 3";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, series1, category1);
dataset.addValue(4.0, series1, category2);
dataset.addValue(5.0, series1, category3);
dataset.addValue(5.0, series2, category1);
dataset.addValue(7.0, series2, category2);
dataset.addValue(7.0, series2, category3);
dataset.addValue(6.0, series3, category1);
dataset.addValue(8.0, series3, category2);
dataset.addValue(8.0, series3, category3);
return dataset;
}
private DefaultCategoryDataset getLineChartDataSet() {
// 表示するデータの作成
String series1 = "NTTドコモ";
String series2 = "au";
String series3 = "ソフトバンク";
// カテゴリーの設定
String category1 = "7月";
String category2 = "8月";
String category3 = "9月";
String category4 = "10月";
String category5 = "11月";
// グラフデータを設定する
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(145100, series1, category1);
dataset.addValue(125500, series1, category2);
dataset.addValue(109400, series1, category3);
dataset.addValue(57700, series1, category4);
dataset.addValue(88100, series1, category5);
dataset.addValue(51800, series2, category1);
dataset.addValue(56600, series2, category2);
dataset.addValue(914000, series2, category3);
dataset.addValue(58400, series2, category4);
dataset.addValue(82300, series2, category5);
dataset.addValue(279500, series3, category1);
dataset.addValue(288900, series3, category2);
dataset.addValue(332600, series3, category3);
dataset.addValue(324200, series3, category4);
dataset.addValue(276600, series3, category5);
return dataset;
}
public Chart() {
// 日本語が文字化けしないテーマ
ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
try {
// 棒グラフDataSet****************************************************************
DefaultCategoryDataset barDS = getBarChartDataSet();
// 棒グラフのJFreeChartオブジェクトの生成
JFreeChart barChart = ChartFactory.createBarChart("棒グラフのサンプル", null, "値", barDS, PlotOrientation.VERTICAL, true, true, false);
// 棒グラフ名設定
barChartName = saveChartAsPNG(barChart, 500, 500, null);
// 線グラフDataSet****************************************************************
DefaultCategoryDataset lineDS = getLineChartDataSet();
// 線グラフのJFreeChartオブジェクトの生成
JFreeChart lineChart = ChartFactory.createLineChart("純増数", "キャリア", "契約数", lineDS, PlotOrientation.VERTICAL, true, false, false);
// 線グラフ名設定
lineChartName = saveChartAsPNG(lineChart, 600, 400, null);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Chart();
}
// グラフ名を取得
public String getBarChartName() {
return barChartName;
}
public String getLineChartName() {
return lineChartName;
}
/** ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 共通 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */
// グラフ保存先作る
protected static void createTempDir() {
String tempDirName = System.getProperty("java.io.tmpdir") + "/webapps/veriserve/temp";
if (tempDirName == null) {
throw new RuntimeException("Temporary directory system property " + "(java.io.tmpdir) is null.");
}
// create the temporary directory if it doesn't exist
File tempDir = new File(tempDirName);
if (!tempDir.exists()) {
tempDir.mkdirs();
}
}
// グラフ保存
public static String saveChartAsPNG(JFreeChart chart, int width, int height, HttpSession session) throws IOException {
String imgDir = System.getProperty("java.io.tmpdir") + "/webapps/veriserve/temp";
if (chart == null) {
throw new IllegalArgumentException("Null 'chart' argument.");
}
createTempDir();
String prefix = ServletUtilities.getTempFilePrefix();
if (session == null) {
prefix = ServletUtilities.getTempOneTimeFilePrefix();
}
File tempFile = File.createTempFile(prefix, ".png", new File(imgDir));
ChartUtilities.saveChartAsPNG(tempFile, chart, width, height);
if (session != null) {
ServletUtilities.registerChartForDeletion(tempFile, session);
}
return tempFile.getName();
}
}
没有评论:
发表评论