码迷,mamicode.com
首页 > 编程语言 > 详细

jfreechart和springMVC+maven整合

时间:2015-01-25 22:35:52      阅读:809      评论:0      收藏:0      [点我收藏+]

标签:jfreechar   柱形图   

        高校的项目中一个功能是对统计的成绩进行图表分析,查找了一些资料之后感觉jfreechar上手挺快的,简单的做了几个demo也都很好实现,也能够满足项目中的需求,所以就决定使用这个工具。这里就将学习到的一些关于jfreechar的知识整理一下。

1.    引入jar包

       使用这个工具一定要将他的包引入的到项目,在高校的项目中使采用maven管理这些外部文件的,所以对于引入jar包这一步就变得特别简单了,只要在maven项目的pom.xml文件中添加jfreechar的依赖就可以(maven会自动在仓库中检索jar包然后下载到本地)

	<dependency>
<span style="white-space:pre">	</span>    <groupId>jfreechart</groupId>
	    <artifactId>jfreechart</artifactId>
	    <version>1.0.0</version>
	</dependency>

之后我们就会在Maven Depenencies中看到jfreechar需要的jar包了(如果没有的话可以update project—快捷键是ALT+F5)。


2.    修改web.xml文件

在web.xml文件中添加如下代码

<!-- jfreechart报表配置 -->
    <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>/chart</url-pattern>
</servlet-mapping>


上面两步就是jfreechar和springMVC+maven的整合。

 

3. 实现一个柱形图

下面就做一个小例子来熟悉一个这个工具—创建一个柱形图

 

web层中controller中代码

package com.tgb.itoo.chart.controller;

import java.awt.Font;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ColumnChartController {
	
	@RequestMapping("/resultmap")
	public String resultmap(){
		return "/resultmap";
	}
	
	//显示柱状图
    @RequestMapping(value = "/getColumnChart")
    public ModelAndView getColumnChart(HttpServletRequest request,HttpServletResponse response, ModelMap modelMap) throws Exception{
    	//1. 获得数据集合
        CategoryDataset dataset = getDataSet();
        //2. 创建柱状图
        JFreeChart chart = ChartFactory.createBarChart3D("学生对教师授课满意度", // 图表标题
                "课程名", // 目录轴的显示标签
                "百分比", // 数值轴的显示标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        //3. 设置整个柱状图的颜色和文字(char对象的设置是针对整个图形的设置)
        chart.setBackgroundPaint(ChartColor.WHITE); // 设置总的背景颜色
        
        //4. 获得图形对象,并通过此对象对图形的颜色文字进行设置
        CategoryPlot p = chart.getCategoryPlot();// 获得图表对象
        p.setBackgroundPaint(ChartColor.lightGray);//图形背景颜色
        p.setRangeGridlinePaint(ChartColor.WHITE);//图形表格颜色
        
        //5. 设置柱子宽度
        BarRenderer renderer = (BarRenderer)p.getRenderer();
        renderer.setMaximumBarWidth(0.06);
        
        //解决乱码问题
        getChartByFont(chart);
        
        //6. 将图形转换为图片,传到前台
        String fileName = ServletUtilities.saveChartAsJPEG(chart, 700, 400, null, request.getSession());
        String chartURL=request.getContextPath() + "/chart?filename="+fileName;
        modelMap.put("chartURL", chartURL);
        return new ModelAndView("resultmap",modelMap);
    }
    
    //设置文字样式
    private static void getChartByFont(JFreeChart chart) {
    	//1. 图形标题文字设置
        TextTitle textTitle = chart.getTitle();   
        textTitle.setFont(new Font("宋体",Font.BOLD,20));
        
        //2. 图形X轴坐标文字的设置
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        CategoryAxis axis = plot.getDomainAxis();
        axis.setLabelFont(new Font("宋体",Font.BOLD,22));  //设置X轴坐标上标题的文字
        axis.setTickLabelFont(new Font("宋体",Font.BOLD,15));  //设置X轴坐标上的文字
        
      //2. 图形Y轴坐标文字的设置
        ValueAxis valueAxis = plot.getRangeAxis();
        valueAxis.setLabelFont(new Font("宋体",Font.BOLD,15));  //设置Y轴坐标上标题的文字
        valueAxis.setTickLabelFont(new Font("sans-serif",Font.BOLD,12));//设置Y轴坐标上的文字
    }

    // 获取一个演示用的组合数据集对象
    private static CategoryDataset getDataSet() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(40, "", "普通动物学");
        dataset.addValue(50, "", "生物学");
        dataset.addValue(60, "", "动物解剖学");
        dataset.addValue(70, "", "生物理论课");
        dataset.addValue(80, "", "动物理论课");
        return dataset;
    }
}


spring-mvc中的配置

	<bean name="columnChartController"  class="com.tgb.itoo.chart.controller.ColumnChartController" />


web层中jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
   <base href="<%=basePath%>">
 </head>
  <body>
	  <div  style="text-align:center">
		   jfreechart _3D柱状图 <br><br>
		  点击显示柱状图<a href="getColumnChart">getMajorChart</a>
		 <br><br>
		 <img src="${chartURL}"  width=600 height=400  border=0  color=gray>
	  </div>
	  
  </body>
</html>

结果展示:

技术分享





jfreechart和springMVC+maven整合

标签:jfreechar   柱形图   

原文地址:http://blog.csdn.net/y_love_f/article/details/43120815

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!