如何通过JFreeChart实现在jsp页面画甘特图
发表于:2025-11-17 作者:千家信息网编辑
千家信息网最后更新 2025年11月17日,小编给大家分享一下如何通过JFreeChart实现在jsp页面画甘特图,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!首先把重要的代码粘出来供大家参考,项目源码和数据库信息表,以及参考
千家信息网最后更新 2025年11月17日如何通过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安全错误
数据库的锁怎样保障安全
徐州供电公司科技互联网部
数据库需要升级
客户端直接连数据库安全
网络安全西游篇清朗网络
获奖数据库
联联网络技术洛阳有限公司
税控服务器管理系统忘记密码
软件开发试用期计划
教育部信息化和网络安全工作
安卓平台可视化编程软件开发
数据库原理 张红娟答案
ios软件开发 知乎
lot视频存储服务器
提升网络安全的水位
新余个人服务器找哪家好
数据库io瓶颈优化
数字虚拟网络安全
方舟如何查看服务器id
多买网络技术好不好
税务网络安全宣传周
跨专业考网络安全研究生
杨卿网络安全
二级数据库mysql
电子商务数据库设计
海南阅臻网络技术有限公司
跨国并购数据库
会宁租房软件开发
中华人民共和国网络安全法三
杭州驼峰网络技术有限公司
如何根据项目建立数据库