jfreechart和springMVC+maven整合,springmvcmaven

來源:互聯網
上載者:User

jfreechart和springMVC+maven整合,springmvcmaven

        高校的項目中一個功能是對統計的成績進行圖表分析,尋找了一些資料之後感覺jfreechar上手挺快的,簡單的做了幾個demo也都很好實現,也能夠滿足項目中的需求,所以就決定使用這個工具。這裡就將學習到的一些關於jfreechar的知識整理一下。

1.    引入jar包

       使用這個工具一定要將他的包引入的到項目,在高校的項目中使採用maven管理這些外部檔案的,所以對於引入jar包這一步就變得特別簡單了,只要在maven項目的pom.xml檔案中添加jfreechar的依賴就可以(maven會自動在倉庫中檢索jar包然後下載到本地)

<dependency><span style="white-space:pre"></span>    <groupId>jfreechart</groupId>    <artifactId>jfreechart</artifactId>    <version>1.0.0</version></dependency>

之後我們就會在Maven Depenencies中看到jfreechar需要的jar包了(如果沒有的話可以update project—快速鍵是ALT+F5)。


2.    修改web.xml檔案

在web.xml檔案中添加如下代碼

<!-- jfreechart報表配置 -->    <servlet>        <servlet-name>DisplayChart</servlet-name>        <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>DisplayChart</servlet-name>        <url-pattern>/chart</url-pattern></servlet-mapping>


上面兩步就是jfreechar和springMVC+maven的整合。

 

3. 實現一個直條圖

下面就做一個小例子來熟悉一個這個工具—建立一個直條圖

 

web層中controller中代碼

package com.tgb.itoo.chart.controller;import java.awt.Font;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartColor;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.ValueAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.servlet.ServletUtilities;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class ColumnChartController {@RequestMapping("/resultmap")public String resultmap(){return "/resultmap";}//顯示柱狀圖    @RequestMapping(value = "/getColumnChart")    public ModelAndView getColumnChart(HttpServletRequest request,HttpServletResponse response, ModelMap modelMap) throws Exception{    //1. 獲得資料集合        CategoryDataset dataset = getDataSet();        //2. 建立柱狀圖        JFreeChart chart = ChartFactory.createBarChart3D("學生對教師授課滿意度", // 圖表標題                "課程名", // 目錄軸的顯示標籤                "百分比", // 數值軸的顯示標籤                dataset, // 資料集                PlotOrientation.VERTICAL, // 圖表方向:水平、垂直                false, // 是否顯示圖例(對於簡單的柱狀圖必須是false)                false, // 是否產生工具                false // 是否產生URL連結                );        //3. 設定整個柱狀圖的顏色和文字(char對象的設定是針對整個圖形的設定)        chart.setBackgroundPaint(ChartColor.WHITE); // 設定總的背景顏色                //4. 獲得繪圖物件,並通過此對象對圖形的顏色文字進行設定        CategoryPlot p = chart.getCategoryPlot();// 獲得圖表對象        p.setBackgroundPaint(ChartColor.lightGray);//圖形背景顏色        p.setRangeGridlinePaint(ChartColor.WHITE);//圖形表格顏色                //5. 設定柱子寬度        BarRenderer renderer = (BarRenderer)p.getRenderer();        renderer.setMaximumBarWidth(0.06);                //解決亂碼問題        getChartByFont(chart);                //6. 將圖形轉換為圖片,傳到前台        String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());        String chartURL=request.getContextPath() + "/chart?filename="+fileName;        modelMap.put("chartURL", chartURL);        return new ModelAndView("resultmap",modelMap);    }        //設定文字樣式    private static void getChartByFont(JFreeChart chart) {    //1. 圖形標題文字設定        TextTitle textTitle = chart.getTitle();           textTitle.setFont(new Font("宋體",Font.BOLD,20));                //2. 圖形X軸座標文字的設定        CategoryPlot plot = (CategoryPlot) chart.getPlot();        CategoryAxis axis = plot.getDomainAxis();        axis.setLabelFont(new Font("宋體",Font.BOLD,22));  //設定X軸座標上標題的文字        axis.setTickLabelFont(new Font("宋體",Font.BOLD,15));  //設定X軸座標上的文字              //2. 圖形Y軸座標文字的設定        ValueAxis valueAxis = plot.getRangeAxis();        valueAxis.setLabelFont(new Font("宋體",Font.BOLD,15));  //設定Y軸座標上標題的文字        valueAxis.setTickLabelFont(new Font("sans-serif",Font.BOLD,12));//設定Y軸座標上的文字    }    // 擷取一個示範用的組合資料集對象    private static CategoryDataset getDataSet() {        DefaultCategoryDataset dataset = new DefaultCategoryDataset();        dataset.addValue(40, "", "普通動物學");        dataset.addValue(50, "", "生物學");        dataset.addValue(60, "", "動物解剖學");        dataset.addValue(70, "", "生物理論課");        dataset.addValue(80, "", "動物理論課");        return dataset;    }}


spring-mvc中的配置

<bean name="columnChartController"  class="com.tgb.itoo.chart.controller.ColumnChartController" />


web層中jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>   <base href="<%=basePath%>"> </head>  <body>  <div  style="text-align:center">   jfreechart _3D柱狀圖 <br><br>  點擊顯示柱狀圖<a href="getColumnChart">getMajorChart</a> <br><br> <img src="${chartURL}"  width=600 height=400  border=0  color=gray>  </div>    </body></html>

結果展示:






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.