存档

‘Code’ 分类的存档

Jfreechart+JSP实现数据饼图

2010年4月8日 Kimi 没有评论

历经千辛万苦终于把这恶心的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.:

<%@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>
Tags: ,
分类: Code 标签: ,

jsp+ms sql server2000 2005 2008不同版本的驱动连接(转自Timmy’s Blog)

2010年4月5日 Kimi 没有评论

+ms sql server2000 2005 2008不同版本的连接驱动

 //for SQL Server 2000
String DBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String DBLocation="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=dbname"; //dbname就是要连接的数据库名
String DBUser="sa";
String DBPwd="sa";
 // for SQL Server 2008/2005
String DBDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String DBLocation="jdbc:sqlserver://localhost:1433;DatabaseName=dbname"; //dbname就是要连接的数据库名
String DBUser="sa";
String DBPwd="sa";

另外,连接前先确保有对应的jdbc驱动库,这里附上传送门:Microsoft SQL Server JDBC Driver 2.0

Tags: , ,
分类: Code 标签: , ,