Jfreechart+JSP实现数据饼图
2010年4月8日
没有评论
历经千辛万苦终于把这恶心的Jfreechart给纠结好了。这老师啥都不讲,直接让我们做,这不是要人命嘛!-_-||
Piechart.java:
package com.jsp; import java.awt.Color; import java.awt.Font; import java.io.IOException; import java.io.PrintWriter; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.servlet.http.HttpSession; 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.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot3D; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.chart.title.LegendTitle; import org.jfree.chart.title.TextTitle; import org.jfree.data.general.DefaultPieDataset; import org.jfree.data.general.PieDataset; public class Piechart { public static DefaultPieDataset ds=new DefaultPieDataset(); public static String generatePieChart(String titles,HttpSession session, PrintWriter pw){ String filename = ""; try { JFreeChart chart = ChartFactory.createPieChart3D(titles, getDataSet(), true, true, false); PiePlot3D plot = (PiePlot3D) chart.getPlot(); plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})")); chart.setBackgroundPaint(Color.white); plot.setForegroundAlpha(1.0f); plot.setCircular(true); Font font = new Font("黑体", Font.TRUETYPE_FONT, 12); TextTitle title = new TextTitle(titles); title.setFont(font); chart.setTitle(title); LegendTitle legend = chart.getLegend(0); legend.setItemFont(font); plot.setLabelFont(font); ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session); ChartUtilities.writeImageMap(pw, filename, info, true); pw.flush(); } catch (IOException ex) { System.out.println("error:"+ex.getMessage()); } return filename; } public static void setDataSet(String name,int n){ ds.setValue(name,n); } public static PieDataset getDataSet(){ DefaultPieDataset dataset = ds; return dataset; } } |
flex_gdn_stat.jsp:
<%@page contentType="text/html;charset=UTF-8"%> <%@page import = "java.util.*"%> <%@page language = "java" import = "java.sql.*"%> <%@page import = "com.jsp.Piechart" %> <%@page import = "java.io.PrintWriter" %> <%@include file ="inc1.jsp"%> <html> <%! public static String returnToBr(String sStr) { if (sStr == null || sStr.equals("")) { return ""; } return sStr.trim(); } %> <% String sql_query = ""; String see = ""; String keid = "", shuid = "", zoneid = ""; int li_temp = 0; int li_order; try { //连接数据库 Class.forName(DBDriver); Connection conn = DriverManager.getConnection(DBLocation, DBUser, DBPwd); Statement stmt = conn.createStatement();//ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); Statement stmt1 = conn.createStatement(); sql_query = "select zonelist, count(gardenid) as num from yl_garden group by zonelist order by num"; ResultSet rs = stmt.executeQuery(sql_query); ResultSet rs1 = null;%> <center><h1>公园数量</h1></center> <table width="100%" border="1"> <tr> <td><div align="center">序号</div></td> <td><div align="center">区域</div></td> <td><div align="center">数量</div></td> </tr> <% li_order = 0; while (rs.next()) { out.println("<tr>"); li_order++; see = rs.getString("zonelist"); see = returnToBr(see); out.println("<td><div align=center>" + li_order + "</div></td>"); out.println("<td><div align=center>" + see.trim() + "</div></td>"); see = rs.getString("num"); see = returnToBr(see); out.println("<td><div align=center>" + see.trim() + "</div></td>"); out.println("</tr>"); Piechart.setDataSet(rs.getString("zonelist"), Integer.parseInt(rs.getString("num"))); } String filename = Piechart.generatePieChart("公园数量图", session, new PrintWriter(out)); String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; %> </table> <center><img src="<%= graphURL%>" width=500 height=300 border=0 ></center> <% rs.close(); stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } %> </html> |

最新评论