- 浏览: 250761 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
mavshuang:
D:\BIEE\instances\instance1\bin ...
Executing:opmnctl start coreapplication_obisch1 failure -
wv1124:
安装 cocoapods报错,替换国内源:ERROR: Co ...
ruby的gem和boundle安装解决办法 -
burkin:
如果first.jsp放在根目录下,也可以用<r ...
struts2整合JFreeChart带热点的实例 -
woweipingzui:
强烈推荐,但是我在测试的时候,需要<packag ...
struts2整合JFreeChart带热点的实例 -
jintianhen1:
网上说用Class.forName("com.tim ...
TimesTen for Windows 使用指南(3) 远程客户端配置
试验了一下午,终于找到图片不能显示的原因,struts2是一个拦截器,把servlet拦截了,故不能找到配置的DisplayChart,通过在strus.xml里配置
<constant name="struts.action.extension" value="do,action"/>让struts2不拦截servlet,就可以显示map了。
注:此带热点的Action没有使用struts2的jfreechart插件。、
导入包:
struts2-jfreechart-plugin-2.1.8.1.jar
jfreechart-1.0.13.jar
jcommon-1.0.16.jar
1.ChartAction(带热点的Action)
2.ChartActionB(热点目标Action)
3.struts.xml
4.first.jsp
5.web.xml
<constant name="struts.action.extension" value="do,action"/>让struts2不拦截servlet,就可以显示map了。
注:此带热点的Action没有使用struts2的jfreechart插件。、
导入包:
struts2-jfreechart-plugin-2.1.8.1.jar
jfreechart-1.0.13.jar
jcommon-1.0.16.jar
1.ChartAction(带热点的Action)
package com.cs.struts2.helloworld; import java.awt.Color; import java.awt.Font; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartRenderingInfo; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.labels.StandardPieToolTipGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.chart.urls.StandardPieURLGenerator; import org.jfree.data.general.DefaultPieDataset; import com.opensymphony.xwork2.ActionSupport; public class ChartAction extends ActionSupport implements ServletRequestAware, ServletResponseAware{ private HttpServletRequest request; private HttpServletResponse response; private String mapMessage; private String src; public String getChart() throws IOException { //生成饼图 JFreeChart chart = ChartFactory.createPieChart( "图书销售统计表", //图表标题 getDateSet(), //数据 true, //是否显示图例 true, //是否显示工具提示 true //是否生成URL ); //设置标题及标题字体 chart.setTitle(new TextTitle("图书销售统计图",new Font("黑体",Font.ITALIC,22))); //建一个图例 LegendTitle legendTitle = chart.getLegend(0); //设置图例字体 legendTitle.setItemFont(new Font("宋体",Font.BOLD,14)); //获取饼图plot对象 PiePlot plot = (PiePlot) chart.getPlot(); //根据key指定各个数据饼图的颜色 plot.setSectionPaint("JAVA教程", Color.RED); plot.setSectionPaint("c++教程", Color.BLUE); plot.setSectionPaint("C#教程", Color.GREEN); plot.setSectionPaint("VC++教程", Color.ORANGE); //设置plot字体 plot.setLabelFont(new Font("宋体",Font.BOLD,18)); //设置背景透明度(0~1) plot.setBackgroundAlpha(0.9f); //-------------------热点设置分割线---------------------------- //设定链接 plot.setNoDataMessage("No data available"); String str =request.getContextPath()+"/first/bchart.action"; //StandardPieURLGenerator()不设置第二个参数"type"默认为category plot.setURLGenerator(new StandardPieURLGenerator(str,"type")); plot.setToolTipGenerator(new StandardPieToolTipGenerator()); StandardEntityCollection sec = new StandardEntityCollection(); //生成RenderingInfo实例,info参数就是图片的热点信息 ChartRenderingInfo info = new ChartRenderingInfo(sec); response.setCharacterEncoding("GBK"); String filename = null; try { filename = ServletUtilities.saveChartAsJPEG(chart, 700, 500, info, request.getSession()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mapMessage = ChartUtilities.getImageMap("map0", info); src = request.getContextPath()+"/servletDisplayChart?filename=" + filename; return "first"; } private static DefaultPieDataset getDateSet() { //提供生成饼图的数据 DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("JAVA教程", 47); dataset.setValue("c++教程", 23); dataset.setValue("C#教程", 20); dataset.setValue("VC++教程", 10); return dataset; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setServletResponse(HttpServletResponse response) { this.response = response; } public String getMapMessage() { return mapMessage; } public void setMapMessage(String mapMessage) { this.mapMessage = mapMessage; } public String getSrc() { return src; } public void setSrc(String src) { this.src = src; } }
2.ChartActionB(热点目标Action)
package com.cs.struts2.helloworld; import java.awt.Color; import java.awt.Font; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import com.opensymphony.xwork2.ActionSupport; public class ChartActionB extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; public JFreeChart getChart() throws IOException { //---------------------逻辑判断分割线------------------------------- CategoryDataset dataset; String queryString = request.getQueryString(); queryString = java.net.URLDecoder.decode(queryString , "UTF-8"); System.out.println(queryString); String type = null; for(String param : queryString.split("&")) { String[] nameValue = param.split("="); type = nameValue[0].equals("type") ? nameValue[1] : type; } String subTitle = ""; if(type.equals("JAVA教程")) { dataset = getDateSet1(); subTitle="JAVA教程"; } else if(type.equals("c++教程")) { dataset = getDateSet4(); subTitle="c++教程"; } else if(type.equals("C#教程")) { dataset = getDateSet2(); subTitle="C#教程"; } else { dataset = getDateSet3(); subTitle="VC++教程"; } //String title = subTitle + "图书的销售情况"; //-------------------------生成图片分割线--------------------- //生成柱状图 JFreeChart chart = ChartFactory.createBarChart ( "图书销售统计表", //图表标题 "月份", //目录轴的显示标签 "销量", //数值轴的显示标签 dataset, //数据 //PlotOrientation.HORIZONTAL, //图表方向水平 PlotOrientation.VERTICAL, //图表方向垂直 false, //是否显示图例 false, //是否显示工具提示 false //是否生成URL ); //设置标题及标题字体 chart.setTitle(new TextTitle("<<"+subTitle+">>销售统计图",new Font("黑体",Font.ITALIC,22))); //建一个图例 //LegendTitle legendTitle = chart.getLegend(0); //设置图例字体 //legendTitle.setItemFont(new Font("宋体",Font.BOLD,14)); //获取柱状图plot对象 CategoryPlot plot = (CategoryPlot) chart.getPlot(); //设置柱型的颜色 plot.getRenderer().setSeriesPaint(0, Color.blue); //取得横轴 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)); //设置背景透明度(0~1) plot.setBackgroundAlpha(0.9f); return chart; } //------------------------提供数据分割线-------------------- private static DefaultCategoryDataset getDateSet4() { System.out.println("c++"); //提供生成柱形图的数据 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(47,"c++教程", "06年10月"); dataset.addValue(60,"c++教程", "06年11月"); dataset.addValue(20,"c++教程","06年12月" ); dataset.addValue(50,"c++教程","07年1月"); return dataset; } private static DefaultCategoryDataset getDateSet1() { System.out.println("java"); //提供生成柱形图的数据 DefaultCategoryDataset dataset1 = new DefaultCategoryDataset(); dataset1.addValue(47,"JAVA教程", "06年10月"); dataset1.addValue(23,"JAVA教程", "06年11月"); dataset1.addValue(20,"JAVA教程","06年12月" ); dataset1.addValue(10,"JAVA教程", "07年1月"); return dataset1; } private static DefaultCategoryDataset getDateSet2() { System.out.println("C#"); //提供生成柱形图的数据 DefaultCategoryDataset dataset2 = new DefaultCategoryDataset(); dataset2.addValue(27,"C#教程", "06年10月"); dataset2.addValue(23,"C#教程", "06年11月"); dataset2.addValue(40,"C#教程","06年12月" ); dataset2.addValue(70,"C#教程", "07年1月"); return dataset2; } private static DefaultCategoryDataset getDateSet3() { System.out.println("VC++"); //提供生成柱形图的数据 DefaultCategoryDataset dataset3 = new DefaultCategoryDataset(); dataset3.addValue(48,"VC++教程", "06年10月"); dataset3.addValue(63,"VC++教程", "06年11月"); dataset3.addValue(29,"VC++教程","06年12月" ); dataset3.addValue(49,"VC++教程","07年1月"); return dataset3; } public void setServletRequest(HttpServletRequest request) { this.request = request; } }
3.struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.action.extension" value="do,action"/> <package name="first" extends="struts-default" namespace="/first"> <action name="chart" class="com.cs.struts2.helloworld.ChartAction" method="getChart"> <result name="first">first.jsp</result> </action> </package> <package name="b" namespace="/first" extends="jfreechart-default"> <action name="bchart" class="com.cs.struts2.helloworld.ChartActionB"> <result type="chart"> <param name="width">700</param> <param name="height">400</param> </result> </action> </package> </struts>
4.first.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib prefix="s" uri="/struts-tags" %> <P ALIGN="CENTER"> <s:property value="mapMessage" escape="false"/> <img src="<s:property value='src'/>" border=0 usemap="#map0"> </P>
5.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>/servletDisplayChart</url-pattern> </servlet-mapping>
评论
2 楼
burkin
2014-08-08
如果first.jsp放在根目录下,也可以用<result name="first">../first.jsp</result>来解决first.jsp找不到的问题。
博主的例子挺好的,谢谢!
博主的例子挺好的,谢谢!
1 楼
woweipingzui
2014-07-12
强烈推荐,但是我在测试的时候,需要<package name="first" extends="struts-default" namespace="/first">中的namespace="/first"去掉,否则报找不到result,不知道怎么回事,另外如何要结合struts2使用的话,将web.xml添加
<filter>
<filter-name>struts2</filter-name>
<!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
发表评论
-
s:if标签不正确显示
2011-01-07 16:11 1046今天碰到<s:if test=""& ... -
struts2整合JFreeChart实例
2010-07-02 10:33 12171.导入jar包: struts2-jfreec ... -
Struts2使用jasperReports和iReport制作报表无法显示图片的问题
2010-07-01 14:32 13831.先建一个action: ... -
使用jasperReports和iReport制作报表PDF的中文问题
2010-07-01 14:12 10221)将iTextAsian.jar和iTextAsianCma ... -
struts2中form提交到action的中文参数乱码问题
2010-06-29 11:15 1527为了解决form提交到action中的中文参数乱码问题。 根据 ... -
struts2中的s:checkbox控件与其他单元格不在同一行
2010-06-28 17:02 1372当我们在表格的单元格中应用struts2中的s:checkbo ... -
Struts2的文件上传和下载
2010-06-23 17:29 12241.文件上传 upload.jsp <body& ...
相关推荐
首先,整合Struts2和JFreeChart的首要步骤是确保在项目中引入JFreeChart和相关依赖。你需要在你的Maven或Gradle配置文件中添加JFreeChart的依赖,通常为以下形式: ```xml <groupId>org.jfree <artifactId>...
本实例将讲解如何在Struts2框架中整合JFreeChart,以实现动态生成图表的功能。 首先,确保你已经安装了Struts2框架,并且在项目中配置了Struts2的核心库。这通常包括添加struts2-core.jar到类路径中,并在web.xml中...
总的来说,Struts2与JFreeChart的整合是Java Web开发中常见的需求,它可以帮助我们创建交互式的、数据驱动的图表应用。通过理解JFreeChart的图表生成原理,掌握Struts2的Action和结果类型,以及熟悉Web应用的图像...
整合Struts2与JFreeChart,可以将JFreeChart生成的图表无缝地集成到Web应用中,为用户提供直观的数据展示。以下是如何实现这一整合的关键步骤和知识点: 1. **JFreeChart库的引入**:首先,你需要在项目的类路径下...
通过Struts 2整合JFreeChart,开发者可以在Web应用中直接展示由JFreeChart生成的图表,简化了图表的呈现过程。 11.1.1 下载和安装JFreeChart 要开始使用JFreeChart,首先需要访问其官方网站(http://www.jfree.org...
这个"struts2 + jfreechart demo"是一个实例,展示了如何在Struts2框架中集成并使用JFreeChart来创建动态图表。通过这个示例,我们可以学习到以下关键知识点: 1. **Struts2框架基础**:了解Struts2的核心概念,如...
使用JFreeChart,必须调用在web-inf目录下导入jfreechart.jar,和jcommon.jar包 使用jfreechart-1.0.13.jar查看图表时中文乱码,降低jfreechart版本ok 显示图表时都可以在获取JfreeChart对象方法中使用3D方式 ...
至此,你已经成功地在Struts2应用中整合了JFreeChart,实现了动态生成并展示图表的功能。这个实例虽然简单,但对于理解和学习这两个库的结合使用是非常有帮助的。你可以根据实际需求,自定义图表样式,调整数据源,...
次实例是Struts2和JFreeChar的整合,下载后解压导入到ide中,输入http://localhost:8080/Struts2_JFreeChart/jfreechart/jfreeChart.action或者...
整合jFreeChart和Struts2可以让开发者在Web应用中轻松展示动态图表。整合过程包括在Struts2 Action中生成图表,然后通过JSP或FreeMarker模板将其渲染到页面上。同时,需要配置Struts2的Action结果类型,确保能够正确...
在Struts2中整合JFreeChart,可以方便地生成各种图表,如柱状图、饼图、线图等,用于数据可视化。JFreeChart是一个用Java编写的开源库,专门用于生成高质量的2D图表。 首先,我们需要理解Struts2的MVC设计模式。在...
Struts2整合Jfreechart代码实例, 绘制各种图形。
压缩包中的`JfreeDemo`可能是一个示例项目,包含了整合JFreeChart与Struts2的具体实现。它可能包括Action类、Excel数据读取代码、图表生成逻辑以及相应的视图展示。通过对这个示例的学习,开发者可以快速掌握如何在...
### 知识点十四:整合jfreechart #### 14.1 jfreechart简介 jfreechart是一个Java图表库,可以用来绘制各种图表。 #### 14.2 整合流程 - **引入依赖**:将jfreechart的相关jar包加入到项目的lib目录中。 - **...
在将Struts2与JasperReport整合时,首先需要在Struts2项目中添加JasperReport的依赖库,这通常包括jasperreports、jcommon、jfreechart等。接下来,我们需要创建一个Action类,该类将负责处理报表生成的请求,并调用...
**JFreeChart、Struts2与Hibernate整合实例详解** 在Java Web开发中,JFreeChart、Struts2和Hibernate是三个非常重要的库。JFreeChart用于生成高质量的图表,Struts2是一个流行的MVC框架,而Hibernate则是一个强大...
- **第14章至第19章整合其他框架**:分别讲述了Struts2与其他流行框架(如Spring、JSF、SiteMesh、JasperReports、JFreeChart、Hibernate)的整合方法,扩展了Struts2的功能范围。 - **第20章至第21章案例分析**:...
【S2SH+Jquery+Oracle+jFreeChart项目实例】是一个综合性的Web应用程序开发案例,主要结合了四个关键的技术:Struts2、Spring、Hibernate和jQuery,以及Oracle数据库和jFreeChart图表库。这个项目旨在展示如何在Java...