千家信息网

如何通过JFreeChart实现在jsp页面画甘特图

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,小编给大家分享一下如何通过JFreeChart实现在jsp页面画甘特图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!首先把重要的代码粘出来供大家参考,项目源码和数据库信息表,以及参考
千家信息网最后更新 2026年11月04日如何通过JFreeChart实现在jsp页面画甘特图

小编给大家分享一下如何通过JFreeChart实现在jsp页面画甘特图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

首先把重要的代码粘出来供大家参考,项目源码和数据库信息表,以及参考的资料和一些资料的网址我就打包放在下面,大家可以下载后学习参考。

ProgressControl.java//完成从数据库读数据,生成甘特图。

package com.angrybirds.DAO;   import java.io.IOException;  import java.io.PrintWriter;  //import java.util.Date;  import java.sql.*;  import java.util.ArrayList;  import java.util.ListIterator;   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.ServletUtilities;  import org.jfree.data.gantt.Task;  import org.jfree.data.gantt.TaskSeries;  import org.jfree.data.gantt.TaskSeriesCollection;   public class ProgressControl {            public static String createPlanGanttChart(String missionId,String missionName,HttpSession session,PrintWriter pw){                    String fileName = null;          Connection conn = null;          Statement stmt = null;          ResultSet rs = null;          String sql = null;          String sql2 = null;                    ArrayList nameList = new ArrayList();          ArrayList startList = new ArrayList();          ArrayList endList = new ArrayList();                    conn = DB.getConnection();          stmt = DB.getStatement(conn);                    sql = "select * from SQLJ.Pro_control"; // where Task_id = '" + missionId + "'";                    //System.out.println(sql);                    rs = DB.getResultSet(stmt, sql);                    try {              while(rs.next()){                                    nameList.add(rs.getString("Task_name"));                  startList.add(rs.getDate("Plan_starttime"));                  endList.add(rs.getDate("Plan_endtime"));                                              }          } catch (SQLException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }                    ListIterator iterN = nameList.listIterator();          ListIterator iterS = startList.listIterator();          ListIterator iterE = endList.listIterator();                    TaskSeriesCollection tsc = new TaskSeriesCollection();          TaskSeries tsPlan = new TaskSeries("Plan");                        while(iterN.hasNext()){                            String submissionName = (String)iterN.next();              java.util.Date sDate = (java.util.Date)iterS.next();              java.util.Date eDate = (java.util.Date)iterE.next();                                        if(sDate.before(eDate)){              Task task = new Task(submissionName,sDate,eDate);              tsPlan.add(task);              }              else{}          }              tsc.add(tsPlan);//tsc.add(tsPlan);                                JFreeChart chart = ChartFactory.createGanttChart(missionName + "GanttProject", "Project", "Time", tsc, true, true, true);              ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());                  try {                      fileName = ServletUtilities.saveChartAsPNG(chart, 500, 80+65*nameList.size(), info,session);                  } catch (IOException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                            try {                      ChartUtilities.writeImageMap(pw, fileName, info,true);                  } catch (IOException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                            try {                      rs.close();                      stmt.close();                      conn.close();                  } catch (SQLException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                     pw.flush();          //System.out.println(fileName);          return fileName;      }      public static String createRealGanttChart(String missionId,String missionName,HttpSession session,PrintWriter pw){          String fileName = null;          Connection conn = null;          Statement stmt = null;          ResultSet rs = null;          String sql = null;          String sql2 = null;                    ArrayList nameList = new ArrayList();          ArrayList startList = new ArrayList();          ArrayList endList = new ArrayList();                    conn = DB.getConnection();          stmt = DB.getStatement(conn);                    sql = "select * from SQLJ.Pro_control"; // where Task_id = '" + missionId + "'";          //System.out.println(sql);          rs = DB.getResultSet(stmt, sql);          try {              while(rs.next()){                  nameList.add(rs.getString("Task_name"));                                  startList.add(rs.getDate("Reality_starttime"));                  endList.add(rs.getDate("Reality_endtime"));                              }          } catch (SQLException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          //rs = null;          //System.out.println("over:1");              ListIterator iterN = nameList.listIterator();          ListIterator iterS = startList.listIterator();          ListIterator iterE = endList.listIterator();          TaskSeriesCollection tsc = new TaskSeriesCollection();          //TaskSeries tsPlan = new TaskSeries("Plan");          TaskSeries tsReal = new TaskSeries("Real");          while(iterN.hasNext()){                            String submissionName = (String)iterN.next();              java.util.Date sDate = (java.util.Date)iterS.next();              java.util.Date eDate = (java.util.Date)iterE.next();                                        if(sDate.before(eDate)){                            Task task = new Task(submissionName,sDate,eDate);              tsReal.add(task);              }              else{}                       }              tsc.add(tsReal);//tsc.add(tsPlan);              JFreeChart chart = ChartFactory.createGanttChart(missionName + "GanttProject", "Project", "Time", tsc, true, true, true);              ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());                  try {                      fileName = ServletUtilities.saveChartAsPNG(chart, 500, 80+65*nameList.size(), info,session);                  } catch (IOException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                  try {                      ChartUtilities.writeImageMap(pw, fileName, info,true);                  } catch (IOException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                  try {                      rs.close();                      stmt.close();                      conn.close();                  } catch (SQLException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                     pw.flush();          //System.out.println(fileName);          return fileName;      }  }

我把计划任务和实际任务分开画的甘特图,所以有两个甘特图的jsp页面

PlanGantt.jsp

<%@ page language="java" import="java.util.*,java.io.*" %> <%@ page import="com.angrybirds.DAO.ProgressControl"%> <%  String path = request.getContextPath();  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  %>       AngryBirds                                  
<% String missionId = "1"; String filename = ProgressControl.createPlanGanttChart(missionId,"AllProject",session,new PrintWriter(out)); String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; %>

RealGantt.jsp

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GBK"%> <%@ page import="com.angrybirds.DAO.ProgressControl"%> <%  String path = request.getContextPath();  String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  %>      AngryBirds                                  
<% String missionId = "1"; String filename = ProgressControl.createRealGanttChart(missionId,"AllProject",session,new PrintWriter(out)); String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; %>

此图为效果图:(由于我用的是DB2所以时间显示有点问题,如果要想甘特图有更好的显示效果可以参考API文档中相关类和方法

地址:http://www.jfree.org/jfreechart/api/javadoc/index.html)

看完了这篇文章,相信你对"如何通过JFreeChart实现在jsp页面画甘特图"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

甘特 参考 页面 数据 任务 效果 数据库 篇文章 资料 重要 两个 代码 信息 后学 地址 完了 实际 效果图 文档 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司起名 互联网下的科技发展 有马互联网科技 唐信互联网科技 成都互联网科技公司 互联网科技论文 友谊互联网络科技 上游互联网科技 丰台科技园 互联网公司 科技大学互联网专业好不好 哈尔滨秒房互联网科技有限公司 金融科技与互联网金融相同和不同 广州新华互联网科技学校电竞方面 滨湖区互联网智能科技产品有哪些 昆明中奇联合互联网科技 互联网时代科技型公司的机会 中国科技和美国互联网 广州三三互联网科技有限公司 科技和互联网行业的特点 武汉亿视互联网科技有限公司 互联网科技工作委员会毛军 互联网时代科技改变生活 宁夏众和广鑫互联网科技有限公司 来此购互联网科技有限公司 彤创互联网科技有限公司 杭州披云加互联网科技有限公司 上海创道互联网络科技有限公司 互联网科技融合创新 艺电能源互联网科技有限公司招聘 10位科技互联网大佬
0