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

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

上效果图:




当然可以将数据导出图片格式存储。具体下的链接里的文件有保存成图片的操作。

因为是strust2整合JFreechart,所以strust2框架一定得搭建好。

1.导入三个包:http://download.csdn.net/detail/x46466/4328100

jcommon-1.0.16.jar

jfreechart-1.0.13.jar

struts2-jfreechart-plugin-2.0.11.jar

2.修改web.xml

 

<!-- Struts2的过滤器 -->

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

修改成:

 

<filter>

<filter-name>struts-prepare</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>

</filter>

<filter>

<filter-name>struts-execute</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts-prepare</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>struts-execute</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

3.写action

1)3D饼图

 

/**

 * @author zhengxinzao

 * 

 */

public class PieChart3DAction extends ActionSupport {

private JFreeChart chart;

public JFreeChart getChart() {

chart = ChartFactory.createPieChart3D("学生成绩分析", getDataset(), true,

false, false);

chart

.setTitle(new TextTitle("学生成绩分析", new Font("黑体", Font.ITALIC,

22)));

LegendTitle legend = chart.getLegend();

legend.setItemFont(new Font("宋体", Font.ITALIC, 14));

PiePlot3D plot = (PiePlot3D) chart.getPlot();

plot.setLabelFont(new Font("隶书", Font.ITALIC, 18));

// 设定背景透明度(0-1.0之间)

plot.setBackgroundAlpha(0.9f);

// 设定前景透明度(0-1.0之间)

plot.setForegroundAlpha(0.50f);

String unitStyle = "{0}={1}({2})";

// 设置图例显示样式

plot.setLabelGenerator(new StandardPieSectionLabelGenerator(unitStyle,

NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

// 设置引用标签显示样式

plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(

unitStyle, NumberFormat.getNumberInstance(), new DecimalFormat(

"0.00%")));

return chart;

}

public void setChart(JFreeChart chart) {

this.chart = chart;

}

private DefaultPieDataset getDataset() {

DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue("不及格", 2);

dataset.setValue("及格", 8);

dataset.setValue("中等", 15);

dataset.setValue("良好", 15);

dataset.setValue("优秀", 5);

dataset.setValue("优秀1", 5);

return dataset;

}

}

2)拆线图

 

/**

 * @author zhengxinzao

 * 

 */

public class LineChartAction extends ActionSupport {

private JFreeChart chart;

 

public JFreeChart getChart() {

 

chart = ChartFactory.createTimeSeriesChart("水果销量统计图", "水果", "销量",

getDataSet(), true, false, false);

 

// 重新设置图标标题,改变字体

chart

.setTitle(new TextTitle("水果销量统计图", new Font("黑体", Font.ITALIC,

22)));

// 取得统计图标的第一个图例

LegendTitle legend = chart.getLegend(0);

// 修改图例的字体

legend.setItemFont(new Font("宋体", Font.BOLD, 14));

 

XYPlot plot = (XYPlot) chart.getPlot();

// 取得横轴

ValueAxis categoryAxis = plot.getDomainAxis();

// 设置横轴显示标签的字体

categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));

// 取得纵轴

NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();

// 设置纵轴显示标签的字体

numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

return chart;

}

 

public void setChart(JFreeChart chart) {

this.chart = chart;

}

 

// 返回一个CategoryDataset实例

private static XYDataset getDataSet() {

TimeSeries apple = new TimeSeries("苹果", Month.class);

apple.add(new Month(10, 2007), 3900);

apple.add(new Month(11, 2007), 900);

apple.add(new Month(12, 2007), 2500);

apple.add(new Month(1, 2008), 3900);

apple.add(new Month(2, 2008), 2000);

apple.add(new Month(3, 2008), 3300);

 

TimeSeries orange = new TimeSeries("桔子", Month.class);

orange.add(new Month(10, 2007), 3300);

orange.add(new Month(11, 2007), 2680);

orange.add(new Month(12, 2007), 2000);

orange.add(new Month(1, 2008), 1900);

orange.add(new Month(2, 2008), 2000);

orange.add(new Month(3, 2008), 2300);

 

TimeSeriesCollection dataset = new TimeSeriesCollection();

dataset.addSeries(apple);

dataset.addSeries(orange);

return dataset;

}

}

3)柱形图

 

/**

 * @author zhengxinzao

 * 

 */

public class BarChart3DAction extends ActionSupport {

private JFreeChart chart;

 

public JFreeChart getChart() {

chart = ChartFactory.createBarChart3D("学生成绩分析", "成绩", "人数",

getDataset(), PlotOrientation.VERTICAL, true, false, false);

chart

.setTitle(new TextTitle("学生成绩分析", new Font("黑体", Font.ITALIC,

22)));

LegendTitle legend = chart.getLegend();

// 修改图例的字体

legend.setItemFont(new Font("宋体", Font.ITALIC, 14));

 

CategoryPlot plot = (CategoryPlot) chart.getPlot();

// 取得横轴

CategoryAxis categoryAxis = plot.getDomainAxis();

categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

 

// 分类标签以45度角倾斜

categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 22));

 

// 取得纵轴

 

NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();

numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));

return chart;

}

 

/**

* @return

*/

private CategoryDataset getDataset() {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(2, "1班", "不及格");

dataset.addValue(4, "2班", "不及格");

dataset.addValue(5, "3班", "不及格");

dataset.addValue(8, "1班", "及格");

dataset.addValue(5, "2班", "及格");

dataset.addValue(10, "3班", "及格");

dataset.addValue(15, "1班", "中等");

dataset.addValue(10, "2班", "中等");

dataset.addValue(10, "3班", "中等");

dataset.addValue(15, "1班", "良好");

dataset.addValue(15, "2班", "良好");

dataset.addValue(15, "3班", "良好");

dataset.addValue(5, "1班", "优秀");

dataset.addValue(5, "2班", "优秀");

dataset.addValue(5, "3班", "优秀");

return dataset;

}

 

public void setChart(JFreeChart chart) {

this.chart = chart;

}

}

 

 

 

 

4.加入strust.xml:

 

<package name="jfreechar" namespace="/jfreechar" extends="jfreechart-default">

<action name="pieChart3DAction" class="com.zxz.ssh.JFreeChart.PieChart3DAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

<action name="lineChartAction" class="com.zxz.ssh.JFreeChart.LineChartAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

<action name="barChart3DAction" class="com.zxz.ssh.JFreeChart.BarChart3DAction">

<result type="chart">

<param name="width">700</param>

<param name="height">400</param>

</result>

</action>

</package>

 

5.jsp中使用:

 

<img alt="" src="jfreechar/pieChart3DAction" style="margin: auto;">

<br />

<img alt="" src="jfreechar/lineChartAction" style="margin: auto;">

<br />

<img alt="" src="jfreechar/barChart3DAction" style="margin: auto;">

<br />

转载于:https://www.cnblogs.com/jpfss/p/7403654.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值