把JfreeChart集成在Hibernate+SpringMVC框架项目中(附源码)
来源:互联网 发布:淘宝买家达到钻号 编辑:程序博客网 时间:2024/06/02 04:55
在使用HIbernate作为持久层开发时,如果想使用JfreeChart来完成一些操作,需要注意以下一些方面:
1.首先需要在项目中导入对应的JfreeChart包并放入lib之下,最主要的就是JFreeChart1.0.18.jar 和 jcommon-1.0.22.jar 文件这两个文件。文末提供的源码下载里面有对应的文件夹包含了主要可以导入的jar。
2.要注意在web.xml里面配置好加上关于JfreeChart的对应配置。
<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>/DisplayChart</url-pattern> </servlet-mapping>
3.之后要注意在使用了Hibernate来对持久层操作不同于使用一般jdbc中的Statement和Connection然后获得结果集的方式来把数据库中的数据传到JfreeChart对应所需要使用的经过DefaultPieDataset dataset = new DefaultPieDataset(); 操作后的dataset中。
所以在此我采用了先使用Query接口取出数据然后封装到ArrayList中,再通过迭代器方式把数据存入dataset中。
下面是两种方式的对比:
jdbc中:
Statement statement = connect.createStatement( ); ResultSet resultSet = statement.executeQuery("select * from mobile_tbl" ); DefaultPieDataset dataset = new DefaultPieDataset(); while( resultSet.next( ) ) //行光标下移,ResultSet独有的方式。 { dataset.setValue( resultSet.getString( "mobile_brand" ) , Double.parseDouble( resultSet.getString( "unit_sale" ))); }
我在Hibernate在采用的方式:
Query query1 = (Query) this.getSession().createQuery("select legaltype from Chart where chart=?").setParameter(0, chart); //获取number Query query2 = (Query) this.getSession().createQuery("select number from Chart where chart=?").setParameter(0, chart); ArrayList<Chart> datas1 = (ArrayList<Chart>) query1.list(); ArrayList<Chart> datas2 = (ArrayList<Chart>) query2.list(); /*System.out.println("----获取legaltype----"+datas1); System.out.println("-----获取number-----"+datas2);*/ Iterator it1 = datas1.iterator(); Iterator it2 = datas2.iterator(); DefaultPieDataset dataset = new DefaultPieDataset(); while(it1.hasNext() && it2.hasNext()) { //采用迭代器方式把所得数据传入,同时注意强制类型转换 dataset.setValue((String)it1.next(), (int)it2.next()); } System.out.print("---输出CityDao中的dataset--- "+dataset); Object c = dataset;
4.由于是采用了Hibernate+SpringMVC方式实现,所以需要在Controller层进行一定的方法来生成JfreeChart的图片
首先要注意之前在Dao层所获得的dataset通过方法return后得到的是一个Object对象,所以需要在Controller层先强转成为(DefaultPieDataset)类型。
同时又因为采用的是SpringMVC跳转页面的方式,所以要把最后生成的PNG图片传到对应的jsp页面中必须采用model方式传递,并在之后的jsp页面中用request.getAttribute方法来获得。
以下是Controller层所需要的一些操作:
DefaultPieDataset dataset = (DefaultPieDataset) cityService.findChart(chart); System.out.println("-------输出controller中dataset-------"+dataset); JFreeChart jchart=ChartFactory.createPieChart("法制问题分布图", dataset, true, true, true); PiePlot pieplot=(PiePlot)jchart.getPlot(); pieplot.setLabelFont(new Font("宋体",0,11)); // 设置饼图是圆的(true),还是椭圆的(false);默认为true pieplot.setCircular(true); // 没有数据的时候显示的内容 pieplot.setNoDataMessage("无数据显示"); StandardPieSectionLabelGenerator standarPieIG = new StandardPieSectionLabelGenerator("{0}:({1}.{2})", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance()); pieplot.setLabelGenerator(standarPieIG); String fileName=ServletUtilities.saveChartAsPNG(jchart, 700, 500, null); System.out.println("-------输出controller中fileName-------"+fileName); model.addAttribute("jfreechart",fileName);
5.最后,得注意jsp页面中显示PNG图片的路径问题,因为要SpringMVC为返回的逻辑页面加了一定的前后缀,容易出问题。
视图显示所需操作:
<body> <% String fileName=(String)request.getAttribute("jfreechart"); System.out.println("-------输出jsp中fileName-------"+fileName); String graphURL = request.getContextPath() + "/DisplayChart?filename="+fileName; System.out.println("-------输出jsp中graphURL-------"+graphURL); %> <td><% //System.out.println("---取出JfreeChart对象---"+request.getAttribute("jfreechart")); %></td> <% //String fileName=(String)request.getAttribute("jfreechart"); %> <img src="<%=graphURL%>" width="700" height="500" border="0"/></body>
初学者可以关注我的微信公众号,学习交流
源码下载
- 把JfreeChart集成在Hibernate+SpringMVC框架项目中(附源码)
- SpringMVC集成shiro权限(附源码)
- springmvc集成jfreechart
- SSM框架--(Spring+SpringMVC+Mybatis整合)附源码
- 在项目中集成shiro权限框架
- java项目案例 java项目源码 java后台框架源码 企业级 SpringMVC mybatis or hibernate
- java项目案例 java项目源码 java后台框架源码 企业级 SpringMVC mybatis or hibernate
- 在项目中搭建Hibernate框架步骤
- hibernate框架如何在项目中运用
- IntelliJ IDEA 13操作-- 3.项目集成spring、springMVC、hibernate等框架
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- 【持久化框架】SpringMVC+Spring4+Mybatis3 集成,开发简单Web项目+源码下载
- JS之颠倒数组元素的reverse方法
- 1064. 朋友数(20) PAT
- 欢迎使用CSDN-markdown编辑器
- IDEA如何将master合并到指定支代码
- 使用微信PC端的截图dll库实现微信截图功能
- 把JfreeChart集成在Hibernate+SpringMVC框架项目中(附源码)
- ARKit 开发系列(1)----Xcode开发ARKit应用
- 电影购票APP实现(3)-Android客户端
- Redis 持久化
- 2、如何给未知宽高的图片垂直居中?有几种办法?
- 剑指offer(一) 编程语言 sizeof typedef 赋值运算符函数 总结
- phpMyadmin 配置
- 求最长公共子序列
- hash算法 (hashmap 实现原理)