Struts1.2集成jfreechart的简单示例

本文介绍如何在Struts1项目中集成JFreeChart生成动态图表,并提供了创建3D柱状图的具体步骤和代码示例。

关于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中添加如下代码

  1. <servlet>
  2. <servlet-name>DisplayChart</servlet-name>
  3. <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>DisplayChart</servlet-name>
  7. <url-pattern>/servlet/DisplayChart</url-pattern>
  8. </servlet-mapping>

下面在项目中添加一个生成图表的Action,笔者是在笔者项目中存放Action的包中添加了一个名为FreeChartAction的Action类,代码如下

  1. packagecom.ice.struts.action;
  2. importjava.awt.Font;
  3. importjavax.servlet.http.HttpServletRequest;
  4. importjavax.servlet.http.HttpServletResponse;
  5. importorg.apache.struts.action.Action;
  6. importorg.apache.struts.action.ActionForm;
  7. importorg.apache.struts.action.ActionForward;
  8. importorg.apache.struts.action.ActionMapping;
  9. importorg.jfree.chart.ChartFactory;
  10. importorg.jfree.chart.JFreeChart;
  11. importorg.jfree.chart.plot.PlotOrientation;
  12. importorg.jfree.chart.servlet.ServletUtilities;
  13. importorg.jfree.data.category.CategoryDataset;
  14. importorg.jfree.data.category.DefaultCategoryDataset;
  15. publicclassFreeChartActionextendsAction{
  16. @Override
  17. publicActionForwardexecute(ActionMappingmapping,ActionFormform,
  18. HttpServletRequestrequest,HttpServletResponseresponse)
  19. throwsException{
  20. CategoryDatasetdataset=getCategoryDataSet();//获得数据集
  21. JFreeChartchart=ChartFactory.createBarChart3D(
  22. "水果产量图",//图表标题
  23. "水果",//目录轴的显示标签
  24. "产量",//数值轴的显示标签
  25. dataset,//数据集
  26. PlotOrientation.VERTICAL,//图表方向:水平、垂直
  27. true,//是否显示图例(对于简单的柱状图必须是false)
  28. false,//是否生成工具
  29. false//是否生成URL链接
  30. );
  31. chart.getTitle().setFont(newFont("新宋体",Font.BOLD,13));//设置图表标题字体样式
  32. Fontfont=newFont("楷体",Font.PLAIN,9);
  33. chart.getCategoryPlot().getDomainAxis().setLabelFont(font);//设置图表横坐标轴标题字体样式
  34. chart.getCategoryPlot().getRangeAxis().setLabelFont(font);//设置图表纵坐标轴标题字体样式
  35. chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);//设置图表横坐标轴目录字体样式
  36. chart.getLegend().setItemFont(font);//设置图示字体样式
  37. chart.getCategoryPlot();
  38. Stringfilename=ServletUtilities.saveChartAsJPEG(chart,600,600,request.getSession());
  39. request.setAttribute("chartUrl",request.getContextPath()+"/servlet/DisplayChart?filename="+filename);
  40. returnmapping.findForward("show");
  41. }
  42. privateCategoryDatasetgetCategoryDataSet(){
  43. DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
  44. dataset.addValue(100,"北京","苹果");
  45. dataset.addValue(100,"上海","苹果");
  46. dataset.addValue(100,"广州","苹果");
  47. dataset.addValue(200,"北京","梨子");
  48. dataset.addValue(200,"上海","梨子");
  49. dataset.addValue(200,"广州","梨子");
  50. dataset.addValue(300,"北京","葡萄");
  51. dataset.addValue(300,"上海","葡萄");
  52. dataset.addValue(300,"广州","葡萄");
  53. dataset.addValue(400,"北京","香蕉");
  54. dataset.addValue(400,"上海","香蕉");
  55. dataset.addValue(400,"广州","香蕉");
  56. dataset.addValue(500,"北京","荔枝");
  57. dataset.addValue(500,"上海","荔枝");
  58. dataset.addValue(500,"广州","荔枝");
  59. returndataset;
  60. }
  61. }

由于只是简单示例,笔者就没有从数据库中取数据,而是直接在FreeChartAction中添加了一个getCategoryDataSet()方法用于模拟生成图表的数据集对象,笔者生成的是一个柱状图,在编写过程中发现,当我们使用中文时,应该为图表的标题、图示、坐标轴名称等设置字体样式,否则将无法正常显示中文,这里只是提供一个参考,在应用时可根据自己需要将代码添加你认为合适的位置。

接下来要在struts-config.xml中对FreeChartAction进行配置,在struts-config.xml中的<action-mapping></action-mapping>标签体内添加如下代码

  1. <action
  2. attribute="chartForm"
  3. input="/index.jsp"
  4. path="/FreeChart"type="com.ice.struts.action.FreeChartAction">
  5. <forwardname="show"path="/ShowChart.jsp"></forward>
  6. </action>

在<form-beans></form-beans>标签体内添加

<form-bean name="chartForm" type="org.apache.struts.action.DynaActionForm"/>

接下来我们要在ShowChart.jsp中将图表显示出来,ShowChart.jsp代码如下

  1. <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
  2. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  3. <html>
  4. <head>
  5. <title></title>
  6. </head>
  7. <body>
  8. <center>
  9. <imgalt="图表"src="${chartUrl}"mce_src="${chartUrl}">
  10. </center>
  11. </body>
  12. </html>

<img/>标签中的src我们让它获得我们在action中保存在request对象中的chartUrl。

至此,整个添加过程就结束了。

最后将项目进行部署并运行即可。笔者在将项目部署在tomcat上,打开浏览器在地址栏输入http://localhost:8080/FreeChart/FreeChart.do即可看到我们想要得到的柱状图了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值