首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JFReeChart学习-柱状图(依据页面的选择)

2012-11-10 
JFReeChart学习--柱状图(根据页面的选择)?根据页面的请求,来觉得前台显示的图片的类型HistogramWebJDBC.ja

JFReeChart学习--柱状图(根据页面的选择)


?根据页面的请求,来觉得前台显示的图片的类型

HistogramWebJDBC.java

/** * 连接数据库 *  * @return * @throws Exception */public static Connection getConnection() throws Exception {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "root";String driver = "com.mysql.jdbc.Driver";Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);return conn;}/** * 返回一个CategoryDataset实例 *  * @return * @throws Exception */private static CategoryDataset getDataset() throws Exception {Connection connection = getConnection();Statement st = connection.createStatement();String sql = "select sum(sale),month(sale_date),sale_name from turnover group by month(sale_date),sale_name";ResultSet rs = st.executeQuery(sql);DefaultCategoryDataset dataset = new DefaultCategoryDataset();while (rs.next()) {dataset.addValue(rs.getInt(1), rs.getString(2) + "月份",rs.getString(3));}return dataset;}public static JFreeChart createChart(boolean is3D) {JFreeChart chart = null;if (is3D) {try {chart = ChartFactory.createBarChart3D("营业员营业额统计图",// 图表标题"营业员",// X轴的显示标签"营业额",// Y轴的显示标签getDataset(),// 数据集PlotOrientation.VERTICAL,// 图标方向:垂直true,// 是否显示图片false, // 是否生成工具false// 是否生成链接);} catch (Exception e) {e.printStackTrace();}} else {try {chart = ChartFactory.createBarChart("营业员营业额统计图",// 图表标题"营业员",// X轴的显示标签"营业额",// Y轴的显示标签getDataset(),// 数据集PlotOrientation.VERTICAL,// 图标方向:垂直true,// 是否显示图片false, // 是否生成工具false// 是否生成链接);} catch (Exception e) {e.printStackTrace();}}// 重新设置图表的标题,改变字体chart.setTitle(new TextTitle("营业员营业额统计图", new Font("黑体", Font.ITALIC,22)));// 获得图表的第一个图例LegendTitle legend = chart.getLegend(0);// 修改图例的字体legend.setItemFont(new Font("宋体", Font.BOLD, 14));CategoryPlot plot = (CategoryPlot) chart.getPlot();// 取得横轴CategoryAxis categoryAxis = plot.getDomainAxis();// 设置横轴的标签的字体categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));// 分类标签以45度角倾斜categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));// 取得纵轴NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));// 保存图片// FileOutputStream fos = null;// fos = new FileOutputStream("sale.jpg");//// 保存项目的最出的目录下;例如项目名为Test,图片就存在Test下面// ChartUtilities.writeChartAsJPEG(fos, chart, 800, 600, null);// fos.close();//// // 面板的形式显示出来// ChartFrame cf = new ChartFrame("柱状图", chart);// cf.pack();// cf.setSize(800, 600);// cf.setVisible(true);return chart;}

?

通过servlet来处理请求的转发

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// 显示样式(是否显示3D效果)String style = request.getParameter("style");// 生成图片的名称String fileName = null;if (style != null && style.equals("3d")) {fileName = ServletUtilities.saveChartAsJPEG(HistogramWebJDBC.createChart(true), 800, 600,request.getSession());} else {fileName = ServletUtilities.saveChartAsJPEG(HistogramWebJDBC.createChart(false), 800, 600,request.getSession());}// 获取图片路径String graphURL = request.getContextPath() + "/Histogram?filename="+ fileName;// 将路径存放到request对象中request.setAttribute("graphURL", graphURL);// 转发到result.jsp中request.getRequestDispatcher("result.jsp").forward(request, response);}

?

web.xml页面的设置

 <servlet>    <servlet-name>Histogram</servlet-name>    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>Histogram</servlet-name>    <url-pattern>/Histogram</url-pattern>  </servlet-mapping>  <servlet>    <description></description>    <display-name>WebHistogramServlet</display-name>    <servlet-name>WebHistogramServlet</servlet-name>    <servlet-class>servlet.WebHistogramServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>WebHistogramServlet</servlet-name>    <url-pattern>/WebHistogramServlet</url-pattern>  </servlet-mapping>

?

界面的设计

webhistogram.jsp

<div align="center"><h1>查看统计报表</h1><a href="WebHistogramServlet">普通样式</a> <ahref="WebHistogramServlet?style=3d">3D样式</a></div>

?

显示页面

result.jsp

?

<div align="center"><img alt="JFReeChart学习-柱状图(依据页面的选择)" src="${graphURL }" border="1"><br><br> <a href="webhistogram.jsp">返回</a></div>

?

显示效果

3D:


JFReeChart学习-柱状图(依据页面的选择)

非3D:


JFReeChart学习-柱状图(依据页面的选择)

热点排行