999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用JFreeChart在JSP中制作圖表

2013-01-01 00:00:00張玉葉馬春清
計算機時代 2013年4期

摘 要: 圖表的應用不但可以使數據的顯示更加清晰、直觀,而且可大大增強Web頁面的功能和顯示效果。針對目前實際應用中經常需要通過數據庫中的數據生成相應的圖表這一強大需求,介紹了JFreeChart中通過其提供的數據集合對象在JSP頁面中生成圖表的方法,并給出了生成餅圖和柱狀圖的具體方法和代碼。

關鍵詞: JFreeChart; JSP; Web; 圖表

中圖分類號:TP311.1 文獻標志碼:A 文章編號:1006-8228(2013)04-34-03

Generating charts in JSP by using JFreeChart

Zhang Yuye1, Ma Chunqing2

(1. Dept. of computer, Jinan Vocational Colleage, Jinan, Shandong 250014, China; 2. Jinan Information Engineering School)

Abstract: Using charts can not only make data be clearer, more intuitive, but also greatly enhance the Web page and display effects. Aiming at the strong request to generate corresponding charts through data in database in practical applications, a method to generate charts in JSP pages through the data set object supplied by JFreeChart is introduced. The concrete realization method and code of the pie chart and histogram are given.

Key words: JFreeChart; JSP; Web; chart

0 引言

在日常統計報表中我們經常需要用到各種圖表,這些圖表可以讓我們更加清晰直觀地看到數據的各種分布情況。EXCEL中提供了強大的圖表功能,利用這些功能我們可以輕松快捷地制作出所需的各種圖表。現在隨著網絡辦公及無紙化辦公的廣泛應用,人們也需要在網頁中能夠提供類似EXCEL中的圖表功能,能以圖表的形式來清晰直觀地顯示統計報表中的各種數據。JFreeChart是Java平臺上的一個開放的圖表繪制類庫,它完全使用Java語言編寫,可應用于Java Applications、Applets、Servlets和JSP等。利用JFreeChart可生成餅圖、柱狀圖、折線圖、時序圖、散點圖、甘特圖等平時所需的多種圖表,并且可以產生PNG和JPEG格式的兩種輸出[1],利用JSP可以很方便地獲取到生成的圖片,并在網頁中顯示。目前一些介紹JFreeChart使用的多是通過臨時添加一些數據來演示[2-4],而實際應用中圖表的數據通常來自于數據庫,關于如何獲取數據庫中的數據生成圖表介紹的相對較少,事實上這部分內容才是比較實用的。基于此,通過查閱各種參考文獻[5-7]和JFreeChart本身的開發文檔,本文以一個職工情況表為例,通過創建其各種職稱的分布情況的餅圖和柱狀圖,詳細介紹了在JSP中如何利用JFreeChart通過數據庫中的數據生成相應的圖表。

1 數據源

統計報表中的數據通常來自于數據庫。本文用的示例數據庫OAJSP中有一“職工情況表”,如表1所示。

現要統計其各種職稱的人數。職稱人數在表中并沒有直接體現出來,但通過一定的計算可以求出,像這種報表中數據不是直接來自于表中數據,而是需要經過計算得出的,最好是在數據庫中先建立相應的視圖,然后再對視圖進行操作,這樣操作相對簡便。對表1根據職稱建好的視圖(在此將生成的視圖命名為“職稱統計報表”)如表2所示。接下來就相當于直接對“職稱統計報表”這個虛擬表(視圖)進行操作。

2 開發環境

本文示例所采用的開發工具:MyEclipse 8.6,JDK:1.6;數據庫:Oracle 10g;JFreeChart:版本1.0.6。有些高版本的JFreeChart不能很好地支持中文,為了更好地支持中文,本文采用的是1.0.6版本。服務器:利用MyEclipse自帶的Tomcat。

開發前準備:要在JSP中使用JFreeChart,應先根據需要下載其相應版本的軟件,然后將其解壓到本地硬盤上。

導入相應的Jar包:將解壓后的JFreeChart1.0.6中lib目錄下的三個jar包:jfreechart-1.0.6.jar、gnujaxp.jar和jcommon-1.0.10.jar導入到當前工程的lib目錄下。

配置web.xml:JFreeChart生成的圖片應用于JSP時通常要利用其本身提供的Servlet文件,該Servlet文件在JFreeChart組件包中,使用時要將其配置到相應的web.xml文件中,配置方法如下:

DisplayChart

org.jfree.chart.servlet.DisplayChart

DisplayChart

/DisplayChart

3 圖表的建立

在JSP中利用JFreeChart生成圖表,通常分為三個步驟。

⑴ 建立數據集。數據集通常來自于數據庫,需要對數據庫進行操作來獲取所需數據。JFreeChart組件對這一過程進行了封裝,通過自定義的SQL語句即可獲取到已封裝好的數據集合對象。JfreeChart中常用的JDBC數據集合對象有3種,分別為JDBCCategoryDataset(JDBC填充類別數據集合)、JDBCPieDataset(JDBC填充餅形圖數據集合)、JDBCXYDataset(JDBC填充坐標軸數據集合)。

⑵ 創建JfreeChart對象。通常通過制圖工廠JfreeChartFactory提供的相對應的各種方法來創建各種圖表對象。

⑶ 獲取圖片。獲取生成的圖片,在JSP頁面中顯示。

3.1 餅圖的建立

“職工情況表”中各種職稱的統計人數已經建立了相應的視圖“職稱統計報表”,因此接下來就相當于直接對虛擬表“職稱統計報表”進行操作,也即餅圖的數據來源就是視圖“職稱統計報表”中的數據。

⑴ 建立數據集及創建圖表對象。在當前工程(在此設工程名為OAJSP1)的src目錄中新建一類文件PieChartUtil.java,用于與數據庫建立連接并取得職稱統計報表中的數據,同時根據數據集中的數據生成餅圖,代碼如下:

package db;

import java.awt.Font;

import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.labels.StandardPieSectionLabelGenerator;

import org.jfree.chart.plot.PiePlot;

import org.jfree.data.general.PieDataset;

import org.jfree.data.jdbc.JDBCPieDataset;

public class PieChartUtil {

public static PieDataset initPieData() {

String driverName=\"oracle.jdbc.driver.OracleDriver\";

//數據庫驅動

String url=\"jdbc:oracle:thin:@localhost:1521:XE\";

//數據庫連接URL

String user=\"oajsp\"; //數據庫用戶名

String password=\"111111\"; //數據庫密碼

JDBCPieDataset dataset=1;

try { //通過JDBC創建數據集合

dataset=new JDBCPieDataset(url,driverName, user,

password);

String query=\"select 職稱,人數 from職稱統計報表\";

//SQL語句

dataset.executeQuery(query); //查詢并向數據集合中添加

數據 dataset.close(); //關閉數據庫連接

} catch (Exception e) {

e.printStackTrace(); }

return dataset; }

public static JFreeChart createChart() { //創建餅圖

JFreeChart chart=ChartFactory.createPieChart(\"職稱人數統

計\",initPieData(),true,true,1);

//參數分別表示圖表標題,數據集對象,是否顯示圖例,是否顯示提示文本,是否生成超鏈接

chart.getTitle().setFont(new Font(\"隸書\",Font.BOLD,25));

//設置標題字體

chart.getLegend().setItemFont(new Font(\"宋體\",Font.BOLD,

15)); //設置圖例類別字體

PiePlot plot = (PiePlot) chart.getPlot(); //獲取繪圖區對象

plot.setForegroundAlpha(0.5f); //設置前景透明度

plot.setLabelFont(new Font(\"宋體\",Font.PLAIN,12));

//設置分類標簽的字體

plot.setCircular(true); //設置餅形為正圓

plot.setLabelGenerator(new StandardPieSectionLabelGenerator(\"{0}={2}\",

NumberFormat.getNumberInstance(), NumberFormat

.getPercentInstance()));

//設置分類標簽格式為類別名稱及其所占百分比

return chart; } }

⑵ 在JSP中獲取生成的圖片。在OAJSP1工程Webroot目錄中新建一JSP文件(設文件名為pie.jsp),其代碼如下:

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding

=\"GB2312\"%>

<%@ page import=\"org.jfree.chart.servlet.ServletUtilities,

db.PieChartUtil\"%>

<% String path=request.getContextPath();

String basePath=request.getScheme()+\"://\"+request

.getServerName()+\":\"+request.getServerPort()+path+\"/\";%>

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01

Transitional//EN\">

\">

餅圖示例

<% String fileName=ServletUtilities.saveChartAsJPEG

(PieChartUtil.createChart(),500,300,session);

String graphURL=request.getContextPath()

+\"/DisplayChart?filename=\"+fileName; %>

border=\"1\">

⑶ 啟動tomcat服務器,在瀏覽器中輸入http://localhost:8080/OAJSP1/pie.jsp,瀏覽相應的JSP文件,運行結果如圖1所示。

3.2 柱狀圖的建立

柱狀圖的建立過程與餅圖的建立過程大體相同。所不同的是建立餅圖用的是JDBCPieDataset數據集合,建立柱狀圖用的是JDBCCategoryDataset數據集合,不同的數據集合放在不同的包中,要根據需要引入所需的包。還有生成的餅圖和柱狀圖所需要進行的設置稍有不同,根據需要做相應的調整,最后在JSP頁面中要根據需要引入對應的類。具體步驟如下。

⑴ 建立數據集及創建圖表對象。在當前工程OAJSP1的src目錄中新建一類文件BarChartUtil.java,用于與數據庫建立連接并取得職稱統計報表中的數據,同時根據數據集中的數據生成柱狀圖,代碼如下:

package db;

import java.awt.Color;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import org.jfree.chart.plot.CategoryPlot;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.renderer.category.BarRenderer;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.jdbc.JDBCCategoryDataset;

public class BarChartUtil {

public static CategoryDataset initCategoryData() {

String driverName=\"oracle.jdbc.driver.OracleDriver\";

//數據庫驅動

String url=\"jdbc:oracle:thin:@localhost:1521:XE\";

//數據庫連接URL

String user=\"oajsp\"; //數據庫用戶名

String password=\"111111\"; //數據庫密碼

JDBCCategoryDataset dataset=1;

try { //通過JDBC創建數據集合

dataset=new JDBCCategoryDataset(url,driverName,

user,password);

String query=\"select 職稱,人數 from 職稱統計報表\";

//SQL語句

dataset.executeQuery(query); //查詢并向數據集合中添加數據

} catch (Exception e) {

e.printStackTrace(); }

return dataset; }

public static JFreeChart createChart() { //創建柱狀圖

JFreeChart chart=ChartFactory.createBarChart(\"職稱人數統

計\",\"職稱類別\",\"人數\",initCategoryData(),PlotOrientation

.VERTICAL,1,1,1);

CategoryPlot plot=chart.getCategoryPlot(); //獲取圖表區對象

plot.setBackgroundPaint(Color.white); //設置網格背景顏色

plot.setRangeGridlinePaint(Color.pink); //設置網格橫線顏色

BarRenderer renderer=new BarRenderer();

renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setBaseItemLabelsVisible(true);

plot.setRenderer(renderer); //顯示每個柱的數值

return chart; } }

⑵ 在JSP中獲取生成的圖片。在OAJSP1工程Webroot目錄中新建一JSP文件(設文件名為bar.jsp),其代碼如下:

<%@ page language=\"java\" import=\"java.util.*\"

pageEncoding=\"GB2312\"%>

<%@ page import=\"org.jfree.chart.servlet.ServletUtilities,

db.BarChartUtil\"%>

<% String path=request.getContextPath();

String basePath=request.getScheme()+\"://\"+request

.getServerName()+\":\"+request.getServerPort()+path+\"/\"; %>

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0

1 Transitional//EN\">

\">

柱狀圖示例

<% String fileName=ServletUtilities.saveChartAsJPEG

(BarChartUtil.createChart(),500,300,1,session);

String graphURL=request.getContextPath()+

\"/DisplayChart?filename=\"+fileName; %>

\"

border=\"1\">

⑶ 啟動tomcat服務器,在瀏覽器中輸入http://localhost:8080/OAJSP1/bar.jsp,瀏覽相應的JSP文件,運行結果如圖2所示。

4 結束語

圖表的應用不但可以使得數據的顯示更加清晰、直觀,而且能大大增強Web頁面的功能和顯示效果。JFreeChart能夠制作的圖表有很多種,但JFreeChart只提供了幾種常用的數據集合對象,對于沒有提供數據集合對象的圖表,制作時需要自己進行底層數據庫操作的封裝,其實現過程相對復雜一些。本文介紹的利用JFreeChart中的數據集合對象來獲取數據庫中的數據在JSP中生成圖表的方法,其實現簡單方便,具有通用性,應用廣泛。

參考文獻:

[1] 朱賀新,穆榮,盧建軍.JFreeChart的應用開發與改進[J].西安科技大學學報,2008.12(28):789-791

[2] 王征強.利用JFreeChart開發包繪制圖表[J].刑臺職業技術學院學報,2007.2(24):38-41

[3] 李村合,張培穎.基于J2EE的Java繪圖方法研究與實現[J].微計算機應用,2005.26(4):49-451

[4] 劉艷霞.JFreeChart在JSP開發中的應用心得[J].工程地質計算機應用,2005.1:14-16

[5] 李伯宇,趙麗麗.在JSP中實現動態圖表方法研究[J].計算機應用,2003.23(6):213-214

[6] 候俁,劉萬軍.JFreeChart在JavaWeb項目中的應用[J].科學技術與工程,2008.5(8):2699-2700

[7] 王國輝.Java Web開發實戰寶典[M].清華大學出版社,2010.

主站蜘蛛池模板: 日日摸夜夜爽无码| 久久免费观看视频| 欧美黄网在线| 国产成人1024精品| 91 九色视频丝袜| 精品亚洲国产成人AV| 毛片免费在线视频| 国模私拍一区二区| 99ri精品视频在线观看播放| a级毛片一区二区免费视频| 欧美一级黄色影院| 日本免费一级视频| 日韩精品亚洲人旧成在线| 久久青草热| 亚洲欧美在线综合一区二区三区| 日韩成人在线网站| 91成人在线观看| 日韩中文字幕亚洲无线码| 91亚洲影院| 国产探花在线视频| 欧美亚洲国产精品第一页| 久久综合婷婷| 国产亚洲成AⅤ人片在线观看| 天堂在线www网亚洲| 久久99精品久久久久久不卡| 国产主播在线一区| 日韩AV无码免费一二三区| 国产成人综合日韩精品无码不卡| 欧美一区二区人人喊爽| 亚洲欧州色色免费AV| 日本午夜视频在线观看| 国产青青草视频| 日本不卡在线视频| 国产精品香蕉在线观看不卡| 免费在线一区| 精品人妻一区二区三区蜜桃AⅤ| 久久www视频| 国产精品护士| 四虎成人精品| 日本高清在线看免费观看| 亚洲国产成人在线| 四虎AV麻豆| 四虎影视8848永久精品| 91无码人妻精品一区二区蜜桃| 天天综合网色中文字幕| 97国产一区二区精品久久呦| 毛片一区二区在线看| 福利一区在线| 男女性色大片免费网站| 欧美黄色网站在线看| 久久人搡人人玩人妻精品| 国产99免费视频| 中文成人在线| 国产不卡在线看| www.亚洲色图.com| 97超爽成人免费视频在线播放| 国产午夜精品一区二区三区软件| 久久久亚洲国产美女国产盗摄| 亚洲欧美天堂网| 67194成是人免费无码| 精品亚洲麻豆1区2区3区| 国产真实乱子伦视频播放| 嫩草在线视频| 久草视频一区| 制服丝袜国产精品| 欧美精品亚洲二区| 99视频在线观看免费| 亚洲人成网站在线播放2019| 亚洲侵犯无码网址在线观看| 亚洲日韩国产精品综合在线观看| 国产福利小视频高清在线观看| 国产欧美日韩资源在线观看| 国产玖玖玖精品视频| 欧美性久久久久| 国产一区二区视频在线| 激情五月婷婷综合网| 在线播放国产一区| 红杏AV在线无码| 欧美一级在线播放| 国产丝袜精品| 久久久久国产精品嫩草影院| 久久91精品牛牛|