一.增加的jar包

  • struts2-jfreechart-plugin-2.1.6.jar      在struts2的相应jar包中找
  • jcommon-1.0.23.jar                         在jfreechart官网中找
  • jfreechart-1.0.19.jar                         在jfreechart官网中找

jfreechart 的相应jar包地址:http://pan.baidu.com/s/1gfygIob

相应的jsp页面:

<img src="${pageContext.request.contextPath}/jfreechart.action?id=<s:property value="vote.id"/>" />

相应的struts.xml配置:(需要注意的是头文件要改下从箭头中的xml中引入

<package name="jfreechart" extends="jfreechart-default" namespace="/">
<action name="jfreechart" class="jfreeChartAction">
<result name="success" type="chart">
<param name="width">700</param>
<param name="height">250</param>
</result>
</action>
</package>

相应的action:

package action;

import java.util.List;

import jfreechart.JfreeChartService;

import org.apache.struts2.ServletActionContext;
import org.jfree.chart.JFreeChart; import service.SelectionService;
import service.VoteService;
import vo.Selection; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings ( "serial" )
public class JfreeCharAction extends ActionSupport { /**
* 定 义JFreeChart对象注意在这里JFreeChart对象名只能为chart
* http://struts.apache.org/2.x/docs/jfreechart-plugin.html
*/
private JFreeChart chart; public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this .chart = chart;
} private VoteService voteService ;
private SelectionService selectionService ; public void setVoteService(VoteService voteService) {
this.voteService = voteService;
}
public void setSelectionService(SelectionService selectionService) {
this.selectionService = selectionService;
} private JfreeChartService jfreeChartService ;
public void setJfreeChartService(JfreeChartService jfreeChartService) {
this.jfreeChartService = jfreeChartService;
} private List<Selection> select_list ; @Override
public String execute() throws Exception {
Integer id = Integer.valueOf(ServletActionContext.getRequest()
.getParameter("id"));
select_list = selectionService.find(id);
this .chart = jfreeChartService.getChart(select_list);
return SUCCESS;
}
}

相应的service:
   这里的注意点是很容易出现乱码,改下font就ok

package jfreechart;

import java.awt.Color;
import java.awt.Font;
import java.util.List; 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.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.TextAnchor; import vo.Selection; public class JfreeChartService { public JFreeChart getChart(List<Selection> select_list){ DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i = 0 ; i < select_list.size() ; i ++){ dataset.addValue(select_list.get(i).getNumber(),select_list.get(i).getIndex_()+"",select_list.get(i).getContent());
}
JFreeChart chart = ChartFactory.createBarChart("投票结果图",
"选项",
"票数(个)",
dataset,
PlotOrientation.HORIZONTAL,
false,
false,
false); CategoryPlot plot = chart.getCategoryPlot();
//设置网格背景颜色
plot.setBackgroundPaint(Color.white);
//设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
//设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink); //显示每个柱的数值,并修改该数值的字体属性
BarRenderer renderer = new BarRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true); //默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.BASELINE_RIGHT));
renderer.setItemLabelAnchorOffset(20D);
plot.setRenderer(renderer); //下面这段是防止出现乱码的
Font font = new Font("宋体", Font.ITALIC, 12);
CategoryAxis domainAxis = plot.getDomainAxis();//(柱状图的x轴)
domainAxis.setTickLabelFont(font);//设置x轴坐标上的字体
domainAxis.setLabelFont(font);//设置x轴上的标题的字体
ValueAxis valueAxis = plot.getRangeAxis();//(柱状图的y轴)
valueAxis.setTickLabelFont(font);//设置y轴坐标上的字体
valueAxis.setLabelFont(font);//设置y轴坐标上的标题的字体
chart.getTitle().setFont(font);
return chart ;
} }

最后效果是:

jfreechart 整合sturts2牛刀小试的更多相关文章

  1. 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】

    之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...

  2. struts2整合JFreechart 饼图、折线图、柱形图

    struts2整合JFreechart 饼图.折线图.柱形图 上效果图: 当然可以将数据导出图片格式存储.具体下的链接里的文件有保存成图片的操作. 因为是strust2整合JFreechart,所以s ...

  3. [六]JFreeChart实践五之与Struts2整合

    1.Action,返回Chart package com.java1234.chart.bar; import java.awt.Color; import org.jfree.chart.Chart ...

  4. struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

  5. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

  6. Spring+SpringMVC+MyBatis整合基础篇(二)牛刀小试

    前言 承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. 项目展示地址,点这里http://ssm-demo.13blog.site,账号:admin 密码: ...

  7. java项目中显示图表:struts2整合jfreechart

    需要的包: struts2-jfreechart-plugin-2.2.1.1.jar jfreechart-1.0.13.jar jcommon-1.0.17.jar 前台jsp页面中可以使用ifr ...

  8. (五)sturts2+spring整合

    一.Spring与Struts的整合 1.1:加入Spring的jar包.1.2:加入Struts的jar包.1.3:加入Struts与Spring的整合jar//struts2-spring-plu ...

  9. JFreeChart与struts2整合实例

    1. 3个jar包 jcommon,jfreechart,strust2-jfreechart-plugin 2 <?xml version="1.0" encoding=& ...

随机推荐

  1. java 分布式锁方案

    第一步,自身的业务场景: 在我日常做的项目中,目前涉及了以下这些业务场景: 场景一: 比如分配任务场景.在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高,而且任务 ...

  2. javascript模式之模块模式

    使用模式来组织代码有很多优点:使代码的结构更清晰,逻辑性更强,更容易维护.还可以避免很多错误. 首先,在javascript主要分为两大类: 编程模式-- 一些专门为javascript语言开发出的最 ...

  3. iOS原型模式

    原型模式:大部分重复,只有一小部分不同的情况下,为了代码清晰和避免麻烦,用原型模式,会更方便一点 // 学生1 StudentModel *stu1 = [[StudentModel alloc] i ...

  4. linux病毒

    linux病毒查杀规范 一.病毒发现 1.ps -A.ps -ef.ps -aux查看是否有异常进程 2.last,lastlog命令可查看最近登录的帐户及时间 3.查看/var/log/messag ...

  5. Spark学习笔记之SparkRDD

    Spark学习笔记之SparkRDD 一.   基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ①   内存集合和外部存储系统 ②   ...

  6. redis python-redis 安装详细步骤

    安装redis 把redis安装到 /opt/redis-2.8目录中 wget http://download.redis.io/releases/redis-2.8.1.tar.gz tar -z ...

  7. mapreduce出现类似死锁情况

    在往hbase表里通过bulkload导数据时,某个mapreduce跑了一个多小时还没跑,看yarn界面,发现map还有一小部分没跑完,没跑完的map全在pending,running中没有,同时r ...

  8. This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms while caching 问题及解决

    一.背景    情节1:做别的测试安装下载了软件,妈蛋结果下了百度各种捆绑软件,之后一一卸载,清洁.    情节2:做完上述动作重启电脑后,有线连接连不上,尴尬,然后下载驱动,升级之后ok了. 二.问 ...

  9. 机器学习PR:k近邻法分类

    k近邻法是一种基本分类与回归方法.本章只讨论k近邻分类,回归方法将在随后专题中进行. 它可以进行多类分类,分类时根据在样本集合中其k个最近邻点的类别,通过多数表决等方式进行预测,因此不具有显式的学习过 ...

  10. react使用过程记录

    1, webpack使用,如果发现浏览器打不开,检查是不是 端口冲突 2, webpack报错,如下,加粗是不是 lodash加载的问题 >> A special character wa ...