<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(); } }
没有评论:
发表评论