关于Struts1.2和JFreeChart在这里就不做详细的解说了,正如标题,写这篇文章只是通过一个简单的示例介绍下如何在使用了Struts1的已有项目中加入JFreeChart.
首先需要下载JFreeChart的包,没有的可以到jfreechart的下载站点:http://sourceforge.net/projects/jfreechart/files/下载。
想要使用JFreeChart,则需要将jfreechart-版本号.jar、jcommon-版本号.jar两个jar文件复制到WEB项目的WEB-INF/lib目录(笔者使用的是jfreechart-1.0.13.jar和jcommon-1.0.16.jar)。
接下来在项目的web.xml中添加如下代码
- <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>/servlet/DisplayChart</url-pattern>
- </servlet-mapping>
下面在项目中添加一个生成图表的Action,笔者是在笔者项目中存放Action的包中添加了一个名为FreeChartAction的Action类,代码如下
- packagecom.ice.struts.action;
- importjava.awt.Font;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpServletResponse;
- importorg.apache.struts.action.Action;
- importorg.apache.struts.action.ActionForm;
- importorg.apache.struts.action.ActionForward;
- importorg.apache.struts.action.ActionMapping;
- importorg.jfree.chart.ChartFactory;
- importorg.jfree.chart.JFreeChart;
- importorg.jfree.chart.plot.PlotOrientation;
- importorg.jfree.chart.servlet.ServletUtilities;
- importorg.jfree.data.category.CategoryDataset;
- importorg.jfree.data.category.DefaultCategoryDataset;
- publicclassFreeChartActionextendsAction{
- @Override
- publicActionForwardexecute(ActionMappingmapping,ActionFormform,
- HttpServletRequestrequest,HttpServletResponseresponse)
- throwsException{
- CategoryDatasetdataset=getCategoryDataSet();//获得数据集
- JFreeChartchart=ChartFactory.createBarChart3D(
- "水果产量图",//图表标题
- "水果",//目录轴的显示标签
- "产量",//数值轴的显示标签
- dataset,//数据集
- PlotOrientation.VERTICAL,//图表方向:水平、垂直
- true,//是否显示图例(对于简单的柱状图必须是false)
- false,//是否生成工具
- false//是否生成URL链接
- );
- chart.getTitle().setFont(newFont("新宋体",Font.BOLD,13));//设置图表标题字体样式
- Fontfont=newFont("楷体",Font.PLAIN,9);
- chart.getCategoryPlot().getDomainAxis().setLabelFont(font);//设置图表横坐标轴标题字体样式
- chart.getCategoryPlot().getRangeAxis().setLabelFont(font);//设置图表纵坐标轴标题字体样式
- chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);//设置图表横坐标轴目录字体样式
- chart.getLegend().setItemFont(font);//设置图示字体样式
- chart.getCategoryPlot();
- Stringfilename=ServletUtilities.saveChartAsJPEG(chart,600,600,request.getSession());
- request.setAttribute("chartUrl",request.getContextPath()+"/servlet/DisplayChart?filename="+filename);
- returnmapping.findForward("show");
- }
- privateCategoryDatasetgetCategoryDataSet(){
- DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
- dataset.addValue(100,"北京","苹果");
- dataset.addValue(100,"上海","苹果");
- dataset.addValue(100,"广州","苹果");
- dataset.addValue(200,"北京","梨子");
- dataset.addValue(200,"上海","梨子");
- dataset.addValue(200,"广州","梨子");
- dataset.addValue(300,"北京","葡萄");
- dataset.addValue(300,"上海","葡萄");
- dataset.addValue(300,"广州","葡萄");
- dataset.addValue(400,"北京","香蕉");
- dataset.addValue(400,"上海","香蕉");
- dataset.addValue(400,"广州","香蕉");
- dataset.addValue(500,"北京","荔枝");
- dataset.addValue(500,"上海","荔枝");
- dataset.addValue(500,"广州","荔枝");
- returndataset;
- }
- }
由于只是简单示例,笔者就没有从数据库中取数据,而是直接在FreeChartAction中添加了一个getCategoryDataSet()方法用于模拟生成图表的数据集对象,笔者生成的是一个柱状图,在编写过程中发现,当我们使用中文时,应该为图表的标题、图示、坐标轴名称等设置字体样式,否则将无法正常显示中文,这里只是提供一个参考,在应用时可根据自己需要将代码添加你认为合适的位置。
接下来要在struts-config.xml中对FreeChartAction进行配置,在struts-config.xml中的<action-mapping></action-mapping>标签体内添加如下代码
- <action
- attribute="chartForm"
- input="/index.jsp"
- path="/FreeChart"type="com.ice.struts.action.FreeChartAction">
- <forwardname="show"path="/ShowChart.jsp"></forward>
- </action>
在<form-beans></form-beans>标签体内添加
<form-bean name="chartForm" type="org.apache.struts.action.DynaActionForm"/>
接下来我们要在ShowChart.jsp中将图表显示出来,ShowChart.jsp代码如下
- <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <center>
- <imgalt="图表"src="${chartUrl}"mce_src="${chartUrl}">
- </center>
- </body>
- </html>
<img/>标签中的src我们让它获得我们在action中保存在request对象中的chartUrl。
至此,整个添加过程就结束了。
最后将项目进行部署并运行即可。笔者在将项目部署在tomcat上,打开浏览器在地址栏输入http://localhost:8080/FreeChart/FreeChart.do即可看到我们想要得到的柱状图了。
本文介绍如何在Struts1项目中集成JFreeChart生成动态图表,并提供了创建3D柱状图的具体步骤和代码示例。
449

被折叠的 条评论
为什么被折叠?



