精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在JSP頁面中輕松實現數據餅圖

開發 后端
JSP提供了很多簡單實用的工具,其中包括從數據庫中讀出數據,發送數據,并能夠把結果顯示在一個餅狀圖形。現在讓我們看看這一簡單而實用的方法。

你所需要的東西

為了能正確運行本文相關的范例,你必須需要JDK 1.2或更高的版本、一個關系數據庫管理系統、一個JSP網絡服務器。我都是在Tomcat調試這些例子,同時我也使用了Sun Java 2 SDK發布的com.sun.image.codec.jpegclasses。

數據庫設計

假設你在一家從事銷售新鮮水果的公司上班,公司出售的水果包括:蘋果、桔子、葡萄。現在你的老板想用一個餅狀圖形顯示每一種水果的總出售量,餅狀圖形能使每一種產品的銷售情況一目了然,老板可以迅速掌握公司的產品成交情況。

表A使用了本文中的兩種數據庫列表。第一種列表(Products)包含所有銷售產品的名稱;第二種列表(Sales)包含每一種產品對應的銷售量。

Listing A 
Database Design 
---------------
p_products table
----------------
productID int (number)  not null
productname  String (varchar)  not null p_sales table
-------------
saleID   int (number) not null
productID int (number) not null
amount   floatnot null
產品(Products)列表包含productID和productname兩個域。銷售(Sales)列表包含saleID, productID,以及總額。銷售列表中的productID提供了這兩個列表之間的關聯。銷售列表中的總額包含了每一次出售的現金數額,這些數額以浮點型數據出現。

表B中的getProducts()方法連接了兩個數據庫,并把所有的產品名稱保存在數組中:

Listing B

////////////////////////////////////////////////////////////
//Get products from the database as a String array
////////////////////////////////////////////////////////////
public String[] getProducts()
{
 String[] arr = new String[0];
 Connection con;
 Statement stmt;
 ResultSet rs;
 int count = 0;
 String sql = "select * from p_products order by productID";
 try
 {
//Load Driver: Class.forName(driver);
//Connect to the database with the url
con = DriverManager.getConnection(dburl , dbuid , dbpwd);
stmt = con.createStatement();
//Get ResultSet
rs = stmt.executeQuery(sql);
//Count the records
while(rs.next())
 {count++;}
//Create an array of the correct size
arr = new String[count];
//Get ResultSet (the portable way of using rs a second time)
rs = stmt.executeQuery(sql);
while(rs.next())
{
 arr[rs.getInt("productID")] = rs.getString("productname");
}
stmt.close();
con.close();
 }
 catch (java.lang.Exception ex)
 {
arr[0] = ex.toString();
 }
 return arr;
}

我設置以下的數據庫規則:

1、ProductID在產品列表中最獨特,也是最關鍵;

2、ProductID對于第一個記錄的值為0;

3、所有之后的連續的記錄都是累加的,所以第二個記錄的productID為1,第三個記錄的productID為2,以此類推。

這些數據庫規則允許在product數組中存儲數據,如下所示:

arr[rs.getInt("productID")] = rs.getString("productname");


一些數據庫管理系統在缺省情況下就允許數據的自動累加或者自動排序。當你在設計數據庫時,一定先查明你的數據庫管理系統遵循哪些規則,比如自動累加,自動排序等。

#p#

獲取總銷售量

在多數情況下,銷售列表中會有很多個記錄,所以訪問數據庫的快捷性和高效性顯得非常重要。現在我們只需要訪問數據庫中每一種產品的總額銷售量。
表C中的getSales()方法與數據庫連接并返回一個數組,這個數組包含每一種產品的總額出售量。

Listing C 

////////////////////////////////////////////////////////////
//Get the sales totals from the database
////////////////////////////////////////////////////////////
public float[] getSales(int products)
{
 float[] arr = new float[products];
 Connection con;
 Statement stmt;
 ResultSet rs;
 int count = 0;
 String sql = "select productID, amount from p_sales";
 try
 {
//Load Driver:
Class.forName(driver);
//Connect to the database with the url
con = DriverManager.getConnection(dburl , dbuid , dbpwd);
stmt = con.createStatement();
//Get ResultSet
rs = stmt.executeQuery(sql);
while(rs.next())
{
 int product = rs.getInt("productID");
 //Check that the productID is valid
 if (product >= 0 && product < products)
 {
//Add to product total
arr[product] += rs.getFloat("amount");
count++;
 }
   }
stmt.close();
con.close();
 }
 catch (java.lang.Exception ex)
 {
arr[0] = -1.0f;
 }
 return arr;
}

當getSales()遍歷所有的記錄后,它只存儲的是每一種產品新的出售量:

int product = rs.getInt("productID");
arr[product] += rs.getFloat("amount");

pieColor對象

餅狀圖形上的每一種產品應該以不同的顏色顯示。為了達到這一目的,我們建立一個pieColor對象(如表D)所示,這一對象包含有關顏色的數組:

Color pieColorArray[] = {new Color(210,60,60), new Color(60,210,60)…} 

pieColor類定義了一個setNewColor()的方法,這一方法能夠使curPieColor和索引遞增,同時它可以檢查索引不要超過邊界范圍,即采用的方法是:如果curPieColor過大即賦0值。

更有效的是,setNewColor()循環每一種顏色后,并在第一種顏色下執行以下的代碼:

curPieColor++;
if(curPieColor >= pieColorArray.length)
{curPieColor = 0;} 

RenderingHints和antialiasing類

java.awt.RenderingHints類定義了很多方法以顯示二維圖形,包括alpha_interpolation, 抖動,以及antialiasing方法。RenderingHints有助于決定圖形如何顯示以及圖形如何達到最佳處理。

為了能以平滑顯示,可以使用antialiasing方法來處理餅狀圖形。Antialiasing是一種圖形的平滑處理方法。其算法是選擇一個特殊象素的顏色值并取代交叉處的象素,從而能夠使線條交叉處得到平滑化。

圖A說明了antialiasing方法的效果。可以看出使用antialiasing方法的餅狀圖形的線條交叉處變得很平滑。


 

圖A

同時,還可以建立一個RenderingHints對象,并傳遞到Graphics2D setRenderingHints()方法,如下所示:

RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHints(renderHints);

制做可調整的邊界

圖A中的餅狀圖形有一邊界,如何能改變邊界的大小呢?可以先定義int border = 10,然后計算邊界內面積的大小而實現:

Ellipse2D.Double elb = new Ellipse2D.Double(x_pie - border/2, y_pie - border/2, 
pieWidth + border, pieHeight + border);

x_pie和y_pie的值代表著包圍在餅狀圖形的正方形的左上角。我們通過邊界面積取一半(border/2)而得到餅狀圖形的中心。

圓弧(Arc)理論

從java.awt.Graphics 類繼承而來的fillArc()方法提供了繪制餅狀圖形各個部分(或圓弧)的簡單方法:

g2d.fillArc(x_position, y_position, width, height, startAngle, sweepAngle); 

x_position,和y_position整數代表著要填充的圓弧的左上角的x,y的坐標,width和heigh整數代表其具體的尺寸。如果width和height的值相等,餅狀圖形將是一個圓。如果width和height不相等,那么餅狀圖形將是一個橢圓。

fillArc()方法決定基于sweepAngle整數值的圓弧的大小。如果sweepAngle值是正的,則圓弧是以反時針方向繪制,反之以順時針繪制。

繪制圓弧

第一步,使用pieColor對象的getPieColor()方法獲取最近餅狀圓弧的顏色,并把它賦予當前的圓弧::

g2d.setColor(pc.getPieColor());

接著,通過不斷循環sales[]數組并使其累加而獲得總共的銷售量:

salesTotal += sales[i]; 

使用總共銷售量,可以計算出每一種產品銷售情況占總共銷售量的百分量:

float perc = (sales[i]/salesTotal); 

我們計算sweepAngle即可給圓弧的每一部分分配度數:

int sweepAngle = (int)(perc * 360); 

每一部分圓弧畫完之后,startAngle即可根據當前的sweepAngle遞增。這就確保當前的圓弧部分都是以上一圓弧為開始,從而建立一個完整的餅狀圖形。

顯示圖標

圖標提供了顯示餅狀圖形中各個部分最簡潔的方式。一個圖標的大小應該與餅狀圖形中的占有量相對應。

圖B顯示了一個完整餅狀圖形及其對應各個部分的圖標,包括產品名稱、銷售總量、以及各個部分的占有量。


 

圖B

總結

本文講述了如何利用JSP繪制餅狀圖形的方法及算法,這些方法及算法簡單而實用,開發人員可以充分地利用這些方法。

【編輯推薦】

  1. 詳解Java EE中SQL語句的自動構造方法
  2. 數據庫加密技術的功能特性與實現方法
  3. JSP頁面中使用FCKeditor控件
責任編輯:彭凡 來源: 編程中國
相關推薦

2009-07-02 09:25:41

JSP實現頁面跳轉

2009-06-25 16:36:31

JBPM流程圖

2009-06-29 17:09:49

JavaBeanJSP

2009-07-06 15:57:56

獲取數據庫連接JSP

2009-07-02 14:24:02

JSP讀取數據庫

2009-06-25 14:05:01

JavaBean實現J

2023-11-02 10:32:27

GoGORM

2009-07-02 13:36:24

動態頁面JSP技術

2009-07-03 10:52:33

MIDletJSP頁面

2009-08-31 17:35:19

C#使用GDI+實現餅

2009-06-10 17:03:36

JSP動態生成

2024-02-05 13:39:00

隱私數據脫敏

2010-08-05 15:06:19

Flex數據綁定

2011-04-14 10:18:20

數據遷移

2009-07-03 18:12:49

JSP頁面

2009-07-06 09:34:19

JSP頁面

2009-07-01 18:50:29

Dreamweaver

2009-12-24 14:08:25

WPF數據模板

2011-03-04 15:34:52

FileZilla

2010-06-09 17:58:14

UML活動圖
點贊
收藏

51CTO技術棧公眾號

午夜影院免费版| 天堂精品一区二区三区| 91porn在线视频| 国产伦精品一区二区三区免费优势 | 中文在线字幕观看| 日本黄色免费在线| 中文字幕欧美一| 韩国成人一区| 亚洲一卡二卡在线| 日韩亚洲精品在线| 中文字幕日韩欧美| 中文字幕视频观看| 成人精品动漫| 欧美日韩美女在线| 日本一区免费| 欧日韩在线视频| 精品一区二区三区久久久| 欧美黄色性视频| 国产18无套直看片| 日韩大片在线免费观看| 欧美另类高清zo欧美| 无码人妻丰满熟妇区96| a级在线观看| 99精品国产视频| 7777精品久久久大香线蕉小说| 欧美亚洲精品天堂| 欧美~级网站不卡| 在线观看国产精品91| 国模私拍在线观看| 欧美三级一区| 欧美狂野另类xxxxoooo| 成人久久久久久久久| 国产天堂在线播放视频| 自拍偷拍国产亚洲| 亚洲精品一卡二卡三卡四卡| 天堂a√在线| 国产成人在线免费| 91在线观看免费观看| 亚洲精品国产精品乱码视色| 99av国产精品欲麻豆| 久久免费成人精品视频| 青青草原在线免费观看视频| 久久人体视频| 亚洲欧美制服丝袜| 色呦呦一区二区| 精品少妇一区| 亚洲大胆人体在线| 日本不卡视频一区| 澳门久久精品| 日韩欧美黄色影院| 日韩av影视大全| 精品成人18| 91精品国产品国语在线不卡| 三级一区二区三区| 91成人福利社区| 欧美精选午夜久久久乱码6080| 一本久道中文无码字幕av| 中文在线а√在线8| 精品人伦一区二区三区蜜桃网站 | 精品国产精品网麻豆系列| 人妻换人妻仑乱| 91精品短视频| 欧美精品一区二区三区四区| av免费观看不卡| 久久超级碰碰| 精品视频在线播放色网色视频| 精品黑人一区二区三区观看时间| 国产成人一二片| 亚洲黄色免费三级| 亚洲做受高潮无遮挡| 欧洲福利电影| 久久亚洲影音av资源网| 免费人成在线观看| 国产免费成人| 国产成人一区二区| 中文av免费观看| 国产在线不卡一卡二卡三卡四卡| 亚洲最大成人在线| 欧美自拍偷拍一区二区| 久久久噜噜噜久久人人看 | 午夜性福利视频| 久久男人av| 国产亚洲精品美女久久久久| 久久久精品少妇| 红桃视频国产精品| 欧美在线一级va免费观看| 最好看的日本字幕mv视频大全| 久久精品av麻豆的观看方式| 亚洲综合小说区| 日本一区高清| 国产精品国产三级国产有无不卡 | 亚洲精品在线观看视频| 可以直接看的无码av| 91视频一区| 久久久噜噜噜久久中文字免| 在线观看国产区| 国产99精品国产| 青青草成人网| 亚洲按摩av| 日本精品视频一区二区三区| 交换做爰国语对白| 免费看日本一区二区| 欧美成人性色生活仑片| 国产成人无码专区| 成人免费三级在线| 亚洲最新在线| 91av亚洲| 精品国产一区二区三区不卡| 欧美特级黄色录像| 欧美日本一区二区视频在线观看| 国产成人中文字幕| 六月婷婷综合网| 国产精品久久久久久福利一牛影视| 日韩成人三级视频| 欧美性www| 亚洲男人天堂古典| 国产无码精品视频| 国产一区二区不卡老阿姨| 欧美一区二区视频在线| av剧情在线观看| 日韩精品一区二区三区老鸭窝 | 色135综合网| 热99精品只有里视频精品| 超碰福利在线观看| 亚洲天堂久久久久久久| 国产又大又黄又粗的视频| 欧美天堂社区| 久久久久久久网站| 亚洲xxxx天美| 亚洲免费视频中文字幕| 亚洲 欧美 日韩系列| 免费欧美视频| 欧美性做爰毛片| 日日夜夜精品免费| 亚洲一区二区视频在线| 日韩欧美色视频| 香蕉综合视频| 91美女福利视频高清| 99riav在线| 欧日韩精品视频| 国产熟妇久久777777| 亚洲欧美bt| 久久综合色一本| 九九精品调教| 精品日韩一区二区三区免费视频| 五月天激情丁香| 国产美女av一区二区三区| 亚洲最新免费视频| 亚洲伦理网站| 操人视频在线观看欧美| av中文字幕免费| 一区二区三区精品| 亚洲美女精品视频| 极品尤物久久久av免费看| 国产精品播放| 成年人黄色大片在线| 亚洲精品美女视频| 亚洲乱码国产乱码精品| 日本一区二区视频在线观看| 91制片厂毛片| 国产精品久久占久久| 亚洲最大的网站| 欧美videos另类精品| 亚洲黄色av女优在线观看| 久久久久久91亚洲精品中文字幕| 久久综合狠狠综合久久激情| 爱情岛论坛成人| 国产精品97| 99热在线播放| 深夜成人在线| 最好看的2019年中文视频| 国产精品福利电影| 亚洲综合色区另类av| 丰满大乳奶做爰ⅹxx视频| 日韩制服丝袜先锋影音| 亚洲精品电影在线一区| 日韩三级精品| 欧美亚洲国产日本| 香蕉视频在线播放| 日韩精品一区二区三区在线播放 | 精品美女一区二区| 日韩不卡视频在线| 国产精品麻豆视频| 中文字幕人妻一区| 可以看av的网站久久看| 国产精品99久久久久久大便| 哺乳一区二区三区中文视频| 国产成人av网| 影院在线观看全集免费观看| 精品无人国产偷自产在线| 青青国产在线视频| 亚洲精品国产视频| 无码少妇一区二区| 国产成人精品免费看| 成人在线免费播放视频| 欧美 日韩 国产一区二区在线视频 | 99久久亚洲精品蜜臀| 国产日本一区二区三区| 精品自拍视频| 4438全国亚洲精品在线观看视频| 成人三级黄色免费网站| 精品国一区二区三区| 中国黄色一级视频| 亚洲二区视频在线| 国产人与禽zoz0性伦| 91婷婷韩国欧美一区二区| 天天操精品视频| 老牛嫩草一区二区三区日本 | 色yeye免费人成网站在线观看| 亚洲男人天堂视频| 亚洲乱码在线观看| 欧美美女黄视频| 无码人妻av一区二区三区波多野| 夜夜精品浪潮av一区二区三区| 日本一卡二卡在线播放| 99久久99久久精品免费看蜜桃 | 中文字幕在线观看第二页| 午夜视频在线观看一区二区| 91香蕉视频污在线观看| 久久免费精品国产久精品久久久久| 日本人妻一区二区三区| 久久99精品国产麻豆婷婷| 国产福利一区视频| 久久成人亚洲| 久久久999免费视频| 欧美精品自拍| 欧美日韩一级在线| 第一会所sis001亚洲| 欧美第一黄网| 日韩av网址大全| 成人午夜电影免费在线观看| 成人精品视频在线观看| 国产精品亚发布| 午夜无码国产理论在线| 热久久这里只有精品| 福利在线免费视频| 高清欧美性猛交xxxx黑人猛交| 污污网站在线看| 久久精品99国产精品酒店日本| 国产精品99999| 亚洲性av网站| 浮生影视网在线观看免费| 亚洲欧美日韩中文在线制服| 日韩大胆人体| 亚洲天堂男人天堂| 国产一二三区在线视频| 亚洲一级一级97网| 国产在线色视频| 国产亚洲精品一区二555| 国产精品四虎| 色噜噜久久综合伊人一本| 137大胆人体在线观看| 中文字幕亚洲欧美在线| 午夜在线免费观看视频| 久久亚洲精品毛片| 18视频在线观看网站| 欧美精品电影免费在线观看| 草美女在线观看| 91a在线视频| 电影一区二区三区| 国产精品久久不能| 91精品视频一区二区| 51国偷自产一区二区三区的来源 | 国产午夜福利片| 岛国精品视频在线播放| 国产午夜麻豆影院在线观看| 欧美性感一区二区三区| 国产又黄又粗又猛又爽| 精品少妇一区二区三区视频免付费 | 久久综合九色欧美综合狠狠| 99久久99久久精品免费看小说.| 国产精品不卡一区二区三区| 黑鬼狂亚洲人videos| 亚洲午夜久久久久久久久电影院 | 日韩精品亚洲一区| 邪恶网站在线观看| 国产精品资源网站| 日本护士做爰视频| 欧美极品少妇xxxxⅹ高跟鞋| 粉嫩av性色av蜜臀av网站| 亚洲自拍偷拍图区| 天天干,天天干| 欧美一区二区在线不卡| 污污视频在线免费看| 中文字幕在线看视频国产欧美在线看完整| 菠萝菠萝蜜在线观看| 91成人精品网站| 色噜噜成人av在线| 精品乱子伦一区二区三区| 成人嘿咻视频免费看| 日本香蕉视频在线观看| 日本视频中文字幕一区二区三区| 一级 黄 色 片一| 26uuu精品一区二区在线观看| 91香蕉视频网| 欧美日韩国产综合新一区| 国产又粗又猛又爽又黄91| 日韩av在线影院| av网站大全在线| 国产精品www色诱视频| jizz性欧美2| 亚洲午夜精品福利| 国产精品腿扒开做爽爽爽挤奶网站| 中文字幕视频三区| 久久婷婷一区二区三区| 国产一级aa大片毛片| 欧美色综合天天久久综合精品| 亚洲av无码乱码国产精品| 中文字幕亚洲国产| 欧美香蕉视频| 国产一区二区精品免费| 在线观看国产精品入口| 又色又爽又高潮免费视频国产| 国产成人av一区二区三区在线| 国产精品麻豆一区| 欧美日韩在线视频一区二区| 亚洲AV无码精品色毛片浪潮| 日韩中文在线视频| 性欧美18一19sex性欧美| 国产一区二区中文字幕免费看| 99久久国产综合精品成人影院| 国产麻花豆剧传媒精品mv在线| 成人午夜视频在线观看| 久久中文免费视频| 欧美精品色一区二区三区| 国产高清视频在线观看| 91超碰中文字幕久久精品| gogo人体一区| 国产自产在线视频| 国产传媒欧美日韩成人| 中文字幕电影av| 欧美精品久久久久久久多人混战| 国产大学生校花援交在线播放| 51午夜精品视频| 三级精品视频| 欧美日韩在线一| 成人app下载| 日本在线视频免费| 亚洲成年网站在线观看| 男女羞羞视频在线观看| 99理论电影网| 欧美久久一区| 2025中文字幕| 亚洲午夜免费电影| 少妇av在线播放| 91精品国产91久久久久久久久| 国产丝袜一区| 自慰无码一区二区三区| 91偷拍与自偷拍精品| 中文字幕69页| 中文字幕不卡av| 91国产一区| 中文字幕日韩精品无码内射| 国产 欧美在线| 日本三级欧美三级| 国产丝袜高跟一区| 日韩av大片站长工具| 水蜜桃亚洲精品| 国产一区二区三区国产| 激情四射综合网| 亚洲精品国产精品乱码不99按摩| 忘忧草在线日韩www影院| 欧美日韩亚洲一区二区三区四区| 久久最新视频| 在线观看亚洲网站| 精品国产一二三| 不卡福利视频| 一道精品一区二区三区| 国产精品18久久久| 日韩精品在线免费看| 亚洲午夜精品久久久久久久久久久久| 91超碰碰碰碰久久久久久综合| 99久久久无码国产精品性色戒| 国产98色在线|日韩| 手机在线看片1024| 日韩亚洲在线观看| 国产精伦一区二区三区| 国产精品丝袜久久久久久消防器材| 欧美国产97人人爽人人喊| 午夜精品在线播放| 日本精品久久中文字幕佐佐木| 日韩欧美视频专区| 国产综合内射日韩久| 在线免费av一区| 色yeye免费人成网站在线观看| 麻豆91av| 国产乱人伦偷精品视频免下载| 久久夜色精品亚洲| 丝袜亚洲欧美日韩综合| 国产欧美啪啪| mm131亚洲精品| 午夜精品一区二区三区电影天堂 | www.四虎在线观看| 日本高清视频一区| 欧美一区二区三区久久精品| 四虎永久免费影院| 欧美一区二区福利在线| 制服诱惑亚洲| 妞干网在线视频观看| 最新国产成人在线观看|