我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評(píng)論 :: 0 Trackbacks
          前段時(shí)間,也就是去年,在做一個(gè)項(xiàng)目的時(shí)候有這樣一個(gè)需求,根據(jù)用戶(hù)在Web頁(yè)面上向服務(wù)器提交的數(shù)據(jù),根據(jù)條件從數(shù)據(jù)庫(kù)中取出相應(yīng)的一系列數(shù)據(jù)后,要能在web瀏覽器上以圖表的形式顯示結(jié)果,形成直觀(guān)的對(duì)比,于是就要我們實(shí)現(xiàn)餅圖,柱圖的動(dòng)態(tài)生成。在網(wǎng)上找了很久,找到了JFreeChart這么一個(gè)東西。

          JFreeChart
          是一個(gè)開(kāi)源的 JAVA 項(xiàng)目,它主要用來(lái)開(kāi)發(fā)各種各樣的圖表,這些圖表包括:餅圖、柱狀圖 ( 普通柱狀圖以及堆棧柱狀圖 ) 、線(xiàn)圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤(pán)等等。在這些不同式樣的圖表上可以滿(mǎn)足目前商業(yè)系統(tǒng)的要求。 JFreeChart 是一種基于 JAVA 語(yǔ)言的圖表開(kāi)發(fā)技術(shù)。 JFreeChart 可用于 Servlet JSP Applet Java Appication 環(huán)境中,通過(guò) JDBC 可動(dòng)態(tài)顯示任何數(shù)據(jù)庫(kù)數(shù)據(jù),結(jié)合 Itext 可以輸出至 PDF
          文件。

          這個(gè)東西正符合我們的需求,于是對(duì)他進(jìn)行了研究并試驗(yàn)。前些時(shí)間懶,一直沒(méi)有把研究測(cè)試心得寫(xiě)出來(lái),現(xiàn)在閑下來(lái),整理了一下,搞兩個(gè)例子放上來(lái)供大家參考吧。



          一、餅圖實(shí)例

          jsp頁(yè)面:index.jsp

          <% @?page?contentType = " text/html;charset=GBK " %>
          <% @?page?import = " org.jfree.data.general.DefaultPieDataset " %>
          <% @?page?import = " org.jfree.chart.* " %>
          <% @?page?import = " org.jfree.chart.plot.* " %>
          <% @?page?import = " org.jfree.chart.servlet.ServletUtilities " %>
          <% @?page?import = " org.jfree.chart.labels.StandardPieToolTipGenerator " %>
          <% @?page?import = " org.jfree.chart.urls.StandardPieURLGenerator " %>
          <% @?page?import = " org.jfree.chart.entity.StandardEntityCollection " %>
          <% @?page?import = " java.io.* " %>

          < HTML > ?
          < HEAD > ?
          < META? http-equiv =Content-Type? content ="text/html;?charset=GBK" > ?
          < META? NAME ="Author" ?CONTENT ="Alpha" >
          < TITLE > 程序員學(xué)歷情況調(diào)查表-By?Alpha </ TITLE > ?
          </ HEAD > ?
          < BODY > ?
          <%
          ????????????DefaultPieDataset?data?
          = ? new ?DefaultPieDataset();?
          ????????????
          // 數(shù)據(jù)初始化
          ????????????data.setValue(
          " 高中以下 " , 380 );?
          ????????????data.setValue(
          " 高中 " , 1620 );?
          ????????????data.setValue(
          " 大專(zhuān) " , 6100 );?
          ????????????data.setValue(
          " 本科 " , 8310 );?
          ????????????data.setValue(
          " 碩士 " , 3520 );?
          ????????????data.setValue(
          " 博士 " , 180 );?
          ????????????
          ????????????
          // HttpSession?session? = ?request.getSession();

          ????????????PiePlot3D?plot?
          = ? new ?PiePlot3D(data); // 生成一個(gè)3D餅圖?
          ????????????
          // plot.setURLGenerator( new ?StandardPieURLGenerator( " DegreedView.jsp " )); // 設(shè)定圖片鏈接?
          ????????????JFreeChart?chart?
          = ? new ?JFreeChart( "" ,JFreeChart.DEFAULT_TITLE_FONT,?plot,? true );?
          ????????????chart.setBackgroundPaint(java.awt.Color.white);
          // 可選,設(shè)置圖片背景色?
          ????????????chart.setTitle(
          " 程序員學(xué)歷情況調(diào)查表-By?Alpha " ); // 可選,設(shè)置圖片標(biāo)題?
          ????????????plot.setToolTipGenerator(
          new ?StandardPieToolTipGenerator());?
          ????????????StandardEntityCollection?sec?
          = ? new ?StandardEntityCollection();?
          ????????????ChartRenderingInfo?info?
          = ? new ?ChartRenderingInfo(sec);?
          ????????????PrintWriter?w?
          = ? new ?PrintWriter(out); // 輸出MAP信息?
          ????????????
          // 500是圖片長(zhǎng)度,300是圖片高度
          ????????????
          // String ?filename? = ?ServletUtilities.saveChartAsPNG(chart, 500 , 300 ,info,session);?
          ????????????
          String ?filename? = ?ServletUtilities.saveChartAsJPEG(chart, 500 , 300 ,info,session);?
          ????????????ChartUtilities.writeImageMap(w,
          " map0 " ,info, false );?

          ????????????
          String ?graphURL? = ?request.getContextPath()? + ? " /servlet/DisplayChart?filename= " ? + ?filename;
          %> ?

          < P? ALIGN ="CENTER" > ?
          < img? src ="<%=?graphURL?%>" ?width =500? height =300? border =0? usemap ="#map0" > ?
          </ P > ?
          </ BODY > ?
          </ HTML >

          本例效果圖:



          二、柱圖實(shí)例

          jsp頁(yè)面:index1.jsp

          <% @page?contentType = " text/html;?charset=GB2312 " %>

          <% @page?import = " java.io.FileNotFoundException " %>
          <% @page?import = " java.io.FileOutputStream " %>
          <% @page?import = " org.apache.commons.logging.Log " %>
          <% @page?import = " java.io.IOException " %>

          <% @page?import = " org.apache.commons.logging.LogFactory " %>
          <% @page?import = " org.jfree.chart.ChartFactory " %>
          <% @page?import = " org.jfree.chart.ChartUtilities " %>
          <% @page?import = " org.jfree.chart.JFreeChart " %>
          <% @page?import = " org.jfree.chart.plot.PlotOrientation " %>
          <% @page?import = " org.jfree.data.category.CategoryDataset " %>
          <% @page?import = " org.jfree.data.category.DefaultCategoryDataset " %>

          <% @page?import = " java.awt.Color " %>
          <% @page?import = " org.jfree.chart.renderer.category.BarRenderer3D " %>
          <% @page?import = " org.jfree.chart.labels.StandardCategoryItemLabelGenerator " %>
          <% @page?import = " org.jfree.chart.axis.CategoryAxis " %>
          <% @page?import = " org.jfree.chart.plot.CategoryPlot " %>

          <%
          ??DefaultCategoryDataset?dataset????
          = ? new ?DefaultCategoryDataset();
          ??dataset.addValue(
          150 ,? " 北京 " ,? " 蘋(píng)果 " );
          ??dataset.addValue(
          530 ,? " 上海 " ,? " 蘋(píng)果 " );
          ??dataset.addValue(
          160 ,? " 廣州 " ,? " 蘋(píng)果 " );
          ??dataset.addValue(
          120 ,? " 北京 " ,? " 梨子 " );
          ??dataset.addValue(
          230 ,? " 上海 " ,? " 梨子 " );
          ??dataset.addValue(
          360 ,? " 廣州 " ,? " 梨子 " );
          ??dataset.addValue(
          600 ,? " 北京 " ,? " 葡萄 " );
          ??dataset.addValue(
          430 ,? " 上海 " ,? " 葡萄 " );
          ??dataset.addValue(
          560 ,? " 廣州 " ,? " 葡萄 " );
          ??dataset.addValue(
          400 ,? " 北京 " ,? " 香蕉 " );
          ??dataset.addValue(
          530 ,? " 上海 " ,? " 香蕉 " );
          ??dataset.addValue(
          660 ,? " 廣州 " ,? " 香蕉 " );
          ??dataset.addValue(
          500 ,? " 北京 " ,? " 荔枝 " );
          ??dataset.addValue(
          630 ,? " 上海 " ,? " 荔枝 " );
          ??dataset.addValue(
          430 ,? " 廣州 " ,? " 荔枝 " );
          ??
          ????JFreeChart?chart?
          = ?ChartFactory.createBarChart3D( " 水果銷(xiāo)量圖統(tǒng)計(jì)-By?Alpha " , " 水果種類(lèi)-http://www.aygfsteel.com/Alpha/ " , " 銷(xiāo)量 " ,dataset,PlotOrientation.VERTICAL, true , false , false );
          ????????chart.setBackgroundPaint(Color.WHITE);
          ????????CategoryPlot?plot?
          = ?chart.getCategoryPlot();

          ????????CategoryAxis?domainAxis?
          = ?plot.getDomainAxis();
          ????????
          // domainAxis.setVerticalCategoryLabels( false );
          ????????plot.setDomainAxis(domainAxis);

          ????????BarRenderer3D?renderer?
          = ? new ?BarRenderer3D();
          ????????renderer.setBaseOutlinePaint(Color.BLACK);

          ????????
          // 設(shè)置每個(gè)地區(qū)所包含的平行柱的之間距離
          ????????renderer.setItemMargin(
          0.1 );
          ????????
          // 顯示每個(gè)柱的數(shù)值,并修改該數(shù)值的字體屬性
          ????????renderer.setItemLabelGenerator(
          new ?StandardCategoryItemLabelGenerator());
          ????????renderer.setItemLabelsVisible(
          true );
          ????????plot.setRenderer(renderer);

          ????????
          // ?設(shè)置柱的透明度
          ????????plot.setForegroundAlpha(
          0 .8f);

          ????ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,
          640 , 400 );
          %>


          本例效果圖:




          三、服務(wù)配制

          ???
          web.xml文件的配制一直困擾了我很久,之前在網(wǎng)上找到的配制都是有問(wèn)題的,搞得生成出來(lái)的圖形顯示不出來(lái),后來(lái)自己才把這個(gè)配制研究成功,網(wǎng)上的東西也很不可靠,找了N多配制,都是一樣的,同現(xiàn)同樣的問(wèn)題,看來(lái)都是轉(zhuǎn)來(lái)轉(zhuǎn)去的結(jié)果 。

          web.xml 文件

          <? xml?version="1.0"?encoding="ISO-8859-1" ?>

          <! DOCTYPE?web-app
          ????PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"
          ????"http://java.sun.com/dtd/web-app_2_3.dtd"
          >

          < web-app >

          ????
          < 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 > /servlet/DisplayChart </ url-pattern >
          ????
          </ servlet-mapping >

          ????
          < welcome-file-list >
          ????????
          < welcome-file > index.jsp </ welcome-file >
          ????
          </ welcome-file-list >
          ????
          </ web-app >

          ?



          posted on 2007-01-13 17:48 java_蟈蟈 閱讀(1485) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): JAVA

          評(píng)論

          # re: JFreeChart在JSP中的應(yīng)用實(shí)例 [轉(zhuǎn)] 2009-03-16 10:23 fush76@tom.com
          您好,為什么我運(yùn)行后報(bào)以下錯(cuò)?


          org.apache.jasper.JasperException: Unable to compile class for JSP:


          An error occurred at line: 7 in the generated java file
          Only a type can be imported. org.jfree.data.general.DefaultPieDataset resolves to a package

          An error occurred at line: 19 in the jsp file: /test_999.jsp
          DefaultPieDataset cannot be resolved to a type
            回復(fù)  更多評(píng)論
            

          # re: JFreeChart在JSP中的應(yīng)用實(shí)例 [轉(zhuǎn)] 2009-03-18 13:09 java_蟈蟈
          @fush76@tom.com
          仔細(xì)看看錯(cuò)誤~~~
            回復(fù)  更多評(píng)論
            

          # re: JFreeChart在JSP中的應(yīng)用實(shí)例 [轉(zhuǎn)] 2012-10-19 19:48 胡小軍的師姐
          @fush76@tom.com
          下載JFreeChart 導(dǎo)入JAR包  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 伊宁县| 库尔勒市| 吴旗县| 余江县| 遂平县| 山东省| 库尔勒市| 乌拉特中旗| 岱山县| 翁源县| 江达县| 呼和浩特市| 平邑县| 霍林郭勒市| 安顺市| 康定县| 荔波县| 宁陕县| 开远市| 芒康县| 永胜县| 长沙市| 台安县| 英山县| 盘山县| 黄大仙区| 江油市| 临泉县| 富蕴县| 万州区| 景谷| 高阳县| 渭源县| 海阳市| 永济市| 菏泽市| 永德县| 天水市| 稷山县| 仪征市| 荆门市|