丄諦啲仇魜ヤ
          如 果 敵 人 讓 你 生 氣 , 那 說 明 你 沒 有 勝 他 的 把 握!
          posts - 6,comments - 56,trackbacks - 1
          1.JFreeReport :報表解決工具
          2.JFreeChart:Java 圖形解決方案(Application/Applet/Servlet/Jsp)
          3.JCommon :JFreeReport和JFreeChart的公共類庫
          4.JFreeDesigner :JFreeReport的報表設計工具
          下載 地址 http://www.jfree.org/jfreechart/index.html 解壓將LIB下的jfreechart-1.0.6.jar 、jcommon-1.0.10.jar、gnujaxp.jar 放到項目中即可,如果加上第三個jar(gnujaxp.jar)包有時web.xml會報錯,把它去掉就好了。

          我的環境 tomcat 6.0 ,eclipse 3.2.  mssql
          在web.xml文件中增加如下配置:
          <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>

          package com.report;
          import java.util.Iterator;
          import java.util.List;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;
          import org.hibernate.Query;
          import org.jfree.data.general.DefaultPieDataset;
          import com.dao.DbApplicationDAO;

          /**
           * 處理餅狀圖
           * 
           * @version1.0 2007-11-3
           * @author王世清
           
          */

          public class PieAction extends Action {

              
          public ActionForward execute(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response) 
          {
                  String year 
          = request.getParameter("year").trim();
                  
          /** ******JfreeChart中的制作柱餅圖類******* */
                  DefaultPieDataset dataset 
          = new DefaultPieDataset();
                  
                  
          //DAO
                  DbApplicationDAO dbApplicationDAO = new DbApplicationDAO();
                  
                  
          /** 查找當年的請假每月的假期總數* */
                  
          //list 里面裝的數組
                  List list = dbApplicationDAO.findAplicationByYear(year);
          /**  findAplicationByYear(year)方法如下
                   public List findAplicationByYear(String year) {
                  log.debug("finding by year instances");
                  try {
                      Byte st = new Byte("1");
                      String queryString = "select sum(days),holidayMonth from DbApplication d where d.state="
                              + st
                              + " and  d.holidayYear="
                              + year
                              + " group by d.holidayMonth order by d.holidayMonth ";
                      Query queryObject = getSession().createQuery(queryString);
                      List list = queryObject.list();
                      // Iterator i=list.iterator();
                      // while(i.hasNext()){
                      // Object[] row = (Object[]) i.next();
                      // Integer days = (Integer) row[0];
                      // String month= (String) row[1];
                      // System.out.println(days+" 個半天 "+month+" 月");
                      //            
                      // 
                      // }
                      return list;

                  } catch (RuntimeException re) {
                      log.error("find all failed", re);
                      throw re;
                  }
              }
          *
          */

                  Iterator i 
          = list.iterator();
                  
          while (i.hasNext()) {
                      Object[] row 
          = (Object[]) i.next();
                      Integer days 
          = (Integer) row[0];
                      String month 
          = (String) row[1];
                      dataset.setValue(month 
          + "", days);
                  }

                  request.setAttribute(
          "year", year);
                  request.setAttribute(
          "dataset", dataset);
                  
          return mapping.findForward("go_pie");//轉發到pie.jsp就是下面顯示的JSP

              }

          }
          餅狀圖輔助類

          package com.report;

          import java.io.PrintWriter;
          import javax.servlet.http.HttpSession;
          import org.jfree.chart.ChartFactory;
          import org.jfree.chart.ChartRenderingInfo;
          import org.jfree.chart.ChartUtilities;
          import org.jfree.chart.JFreeChart;
          import org.jfree.chart.entity.StandardEntityCollection;
          import org.jfree.chart.servlet.ChartDeleter;
          import org.jfree.chart.servlet.ServletUtilities;
          import org.jfree.data.general.DefaultPieDataset;

          /**
           * 餅狀圖輔助類
           * 
           * @version1.0 2007-11-3
           * @author王世清
           
          */


          public class ChartUtil {
              
          public static String generatePieChart(DefaultPieDataset dataset,
                      String title, 
          int width, int height, HttpSession session,
                      PrintWriter pw) 
          {

                  String filename 
          = null;
                  
          try {
                      
          if (session != null{
                          ChartDeleter deleter 
          = (ChartDeleter) session
                                  .getAttribute(
          "JFreeChart_Deleter");
                          session.removeAttribute(
          "JFreeChart_Deleter");
                          session.setAttribute(
          "JFreeChart_Deleter", deleter);
                      }

                      JFreeChart chart 
          = ChartFactory.createPieChart3D(title, // chart
                                                                              
          // title
                              dataset, // data
                              true// include legend
                              truefalse);
                      
                      ChartRenderingInfo info 
          = new ChartRenderingInfo(
                              
          new StandardEntityCollection());
                      
                      filename 
          = ServletUtilities.saveChartAsPNG(chart, width, height,
                              info, session);
                      
                      ChartUtilities.writeImageMap(pw, filename, info, 
          true);
                      pw.flush();
                  }
           catch (Exception e) {
                      System.out.println(
          "Exception - " + e.toString());
                      e.printStackTrace(System.out);
                      filename 
          = "picture_error.png";
                  }

                  
          return filename;
              }

          }

          顯示的頁面pie.jsp
          <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
          <%@ page import="java.io.PrintWriter"%>
          <%@ page import="org.jfree.data.general.DefaultPieDataset"%>
          <%@ page import="com.report.ChartUtil"%>
          <HTML>
              
          <HEAD>
                  
          <TITLE>員工看見的餅狀圖</TITLE>
              
          </HEAD>
              
          <BODY bgcolor="#E0F0F8">
              
          <%      String year= (String) request.getAttribute("year");
                       DefaultPieDataset piedataset
          =(DefaultPieDataset)request.getAttribute("dataset");
                       String p 
          = ChartUtil.generatePieChart(piedataset,year+" 假期統計",600,300,nullnew PrintWriter(out));    
                       String p1 
          = request.getContextPath() + "/servlet/DisplayChart?filename=" + p;
                       
               
          %>
               
          <center>
                  
          <table>
                      
          <tr valign="top" align="center">
                          
          <td>
                              
          <%@ include file="header.jsp"%>
                          
          </td>
                      
          </tr>
                      
          <tr valign="middle" align="center">
                          
          <td>
                              
          <img src="<%=p1%>" width=600 height=300 border=0 usemap="#<%=p%>">
                          
          </td>
                      
          </tr>
                      
          </table>
                      
          </center>
              
          </BODY>
          </HTML>






          posted on 2007-12-06 13:29 Crying 閱讀(596) 評論(0)  編輯  收藏 所屬分類: JreeChart使用

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 天峻县| 美姑县| 延寿县| 喀喇| 田林县| 呼伦贝尔市| 湛江市| 松桃| 定兴县| 长沙县| 根河市| 黔江区| 永宁县| 容城县| 康平县| 永春县| 中江县| 广东省| 綦江县| 资兴市| 上高县| 鄂托克旗| 临泉县| 金平| 乐山市| 嘉祥县| 四平市| 塔城市| 普格县| 沈阳市| 大悟县| 清河县| 平武县| 东港市| 彭州市| 沾益县| 昌黎县| 运城市| 周宁县| 安吉县| 许昌县|