在JAVAWEB项目中用JSP生成数据库数据曲线图

来源:互联网 发布:什么软件可以升级win10 编辑:程序博客网 时间:2024/06/17 16:41

简介

该项目是在后台调取数据库数据在DAO层进行处理,再把处理完的数据集合传到SERVICE层,之后JSP页面将SERVICE层的数据生成以时间为X轴,数量为Y轴的曲线图。
这里写图片描述这是SERVICE层调取的数据。
这里写图片描述这是JSP生成的页面曲线图。

配置信息

在此之前确保已经安装JAVA,Tomcat,MyEclipse,数据库并且全部配置完毕方进行下面的工作。举例:我用的是JAVA1.8,Tomcat9.0和MyEclipse2016以及mysql数据库。
前面工作做好后可以下载JFreeChart的jar包。[链接](http://www.jfree.org/jfreechart/download/ )
或者本文章最后提供的整个项目里已经包含了所需jar包可免费下载。
下载完成后解压,找到jcommon.jar和jfreechart.jar两个包导入目标工程!找到lib文件夹然后选择这两个jar包导入到项目中
接下来是配置用户变量和WEB.XML
1、在用户变量CLASSPATH里添加C:\ jfreechart-1.0.18\lib\ jfreechart-1.0.18.jar和C:\ jfreechart-1.0.18\lib\ jcommon-1.0.22.jar。(该配置转载自:易百教程 » JFreeChart安装)
注:本配置是在WINDOWS环境下配置,如其他系统请参考(http://www.yiibai.com/jfreechart/jfreechart_installation.html)
2、配置Web项目里的WEB.XML:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>bigdata</display-name>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list>    <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>/DisplayChart</url-pattern>    </servlet-mapping></web-app>

JSP程序

<%--下面的类文件是两个jar包导入 --%><%@page import="org.jfree.data.time.TimeSeriesCollection"%><%@page import="org.jfree.data.category.DefaultCategoryDataset"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="java.io.*" %><%@ page import="org.jfree.chart.ChartFactory" %><%@ page import="org.jfree.chart.JFreeChart" %><%@ page import="org.jfree.chart.plot.PlotOrientation" %><%@ page import="org.jfree.chart.ChartUtilities" %><%@ page import="org.jfree.chart.*" %><%@ page import="org.jfree.chart.title.*" %><%@ page import="org.jfree.chart.servlet.ServletUtilities" %><%@ page import="org.jfree.data.time.TimeSeries" %><%@ page import="org.jfree.data.time.TimeSeriesCollection" %><%@ page import="org.jfree.data.time.Day" %><%@ page import="org.jfree.data.xy.XYDataset" %><%@ page import="org.jfree.data.general.SeriesException" %><%@page import="java.util.List"%><%--下面的类文件是我自己做的项目的文件导入 --%><%@page import="cn.bigdata.entity.Data"%><%@page import="cn.bigdata.entity.Sale"%><%@page import="cn.bigdata.entity.Date"%><%@page import="cn.bigdata.database.dao.impl.DataDaoImpl"%><%@page import="cn.bigdata.database.dao.DataDao"%><%@page import="cn.bigdata.service.impl.BigdataServiceImpl"%><%@page import="cn.bigdata.service.BigdataService"%><<jsp:useBean id="bigdataService" class="cn.bigdata.service.impl.BigdataServiceImpl" scope="page"></jsp:useBean><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><!-- 这些属于前端的界面设计,可忽略不计 --> <div class="container">      <div class="header">        <ul class="nav nav-pills pull-right" role="tablist">          <li role="presentation" ><a href="index.html">首页</a></li>        </ul>        <h3 class="text-muted">Big Data Platform</h3>      </div><%--final TimeSeries series = new TimeSeries( "Random Data" );      Second current = new Second();      double value = 100.0;      for ( int i = 0 ; i < 4000 ; i++ )      {         try         {            value = value + Math.random( ) - 0.5;            series.add( current , new Double( value ) );            current = ( Second ) current.next( );         }         catch ( SeriesException e )          {            System.err.println( "Error adding to series" );         }      }      final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);      JFreeChart timechart = ChartFactory.createTimeSeriesChart(         "Products Chart",          "Date",          "SaleNum",          dataset,         false,          false,          false);      int width = 560; /* Width of the image */      int height = 370; /* Height of the image */  //     File timeChart = new File( "TimeChart.jpeg" );  //     ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );    String filename=ServletUtilities.saveChartAsPNG(timechart, width, height, session);    String graphURL=request.getContextPath()+"/DisplayChart?filename="+filename;       --%> <!-- 下面就是曲线图生成过程 --><%  DataDao dataDao=new DataDaoImpl();    bigdataService.setList(dataDao);    List<Sale> saleList=bigdataService.getSaleList();    TimeSeriesCollection lineDataset =new TimeSeriesCollection();    TimeSeries timeSeries=new TimeSeries("Person",Day.class);     int i=10;    for(Sale sale:saleList){            int year=sale.getYear();            int month=sale.getMonth();            int day=sale.getDay();            timeSeries.add(new Day(day,month,year),sale.getSaleNum());    }    lineDataset.addSeries(timeSeries);    JFreeChart chart=ChartFactory.createTimeSeriesChart("saleNum", "date", "num", lineDataset, true, false, false);    String filename=ServletUtilities.saveChartAsPNG(chart, 1000, 800, session);    String graphURL=request.getContextPath()+"/DisplayChart?filename="+filename; %>       <img src="<%=graphURL%>"></body></html>

实现的效果图如最上面的效果图,如需下载完整项目请点击:(http://download.csdn.net/detail/gaoxiang0522/9817699)

0 0
原创粉丝点击