`

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> <a
			href="WebHistogramServlet?style=3d">3D样式</a>
	</div>

 

显示页面

result.jsp

 

<div align="center">
		<img alt="柱状图" src="${graphURL }" border="1"><br>
		<br> <a href="webhistogram.jsp">返回</a>
	</div>

 

显示效果

3D:


非3D:


  • 大小: 87.6 KB
  • 大小: 101.7 KB
分享到:
评论

相关推荐

    jfreeChart---DEMO

    JFreeChart是一个流行的开源Java库,它提供了丰富的图表类型,包括折线图、柱状图、饼图、散点图等,用于生成高质量的2D图表。在本示例中,我们关注的是"jfreechart的折线图demo",它演示了如何通过Servlet封装数据...

    jfreechart-1.0.0-pre2-install.pdf

    JFreeChart不仅支持常见的图表类型,如饼图、柱状图、折线图等,还支持一些高级图表类型,如时间序列图、散点图、甘特图等。此外,该库还包括了图表自定义样式的功能,允许开发者根据需求调整图表的外观。 #### ...

    JFreeChart画统计分析柱状图

    通过以上内容的学习,相信读者已经对如何使用JFreeChart绘制统计分析柱状图有了较为全面的了解。无论是对于初学者来说快速入门的基础示例,还是对于有一定经验的开发者来说探索更多高级特性的途径,本文都提供了一定...

    Struts2+JFreeChart+饼状图,柱状图,折线图

    它支持多种图表类型,包括饼图、柱状图、折线图、散点图等,可以灵活定制颜色、字体、标签等样式,使得开发者能够根据需求生成各种美观的图表。在MyEclipse这样的集成开发环境中,可以便捷地导入JFreeChart库,结合...

    JFreeChart在jsp中显示柱状图、饼图

    **JFreeChart** 是一个Java库,用于生成高质量的图表,包括柱状图、饼图、线图等,广泛应用于Web应用中,如JSP(Java Server Pages)。在这个项目中,开发者通过JFreeChart在JSP页面上展示了数据的可视化,以帮助...

    JFreeChart -- web图表生成源码.zip_JfreeChart web_java web_jfreechart_w

    1. **多样的图表类型**:JFreeChart 支持多种图表类型,满足不同场景的数据展示需求,包括折线图、柱状图、饼图、面积图、甘特图、散点图、热力图等,且可以自定义样式和颜色。 2. **高度可定制化**:用户可以根据...

    JFreeChart 实现无乱码的柱状图和饼状图实例

    下面我们将详细探讨如何使用 JFreeChart 实现无乱码的柱状图和饼状图,并在 JSP 页面中正确显示。 首先,要解决中文乱码问题,我们需要确保所有环节的编码设置正确。这包括项目的源代码编码、JSP 页面编码以及 ...

    jfreechart-0.9.17.jar and jcommon.jar

    在描述中提到的 "jfchart" 文件,可能是一个 JSP 页面,它演示了如何使用 JFreeChart 来绘制柱状图和多坐标轴组合柱状图。在 JFreeChart 中,柱状图的创建通常涉及以下步骤: 1. **创建 CategoryDataset**:这是...

    利用JFreeChart实现Java中饼状图、柱状图等图表并在Jsp中显示

    “利用JFreeChart实现Java中饼状图、柱状图等图表并在Jsp中显示”这个标题表明我们将探讨如何使用JFreeChart库来创建各种类型的图表,如饼状图和柱状图,并且这些图表能够在JavaServer Pages (JSP) 中展示。...

    jfreechart 与struts2的柱状图以及折线图例子

    本篇文章将深入探讨如何在Struts2框架下利用JFreeChart创建柱状图和折线图。 **JFreeChart简介** JFreeChart是一个强大的Java图表库,它支持生成各种类型的图表,包括柱状图、折线图、饼图、散点图等。JFreeChart...

    使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    《使用JFreeChart生成曲线、柱状图、饼状图、分布图展示到JSP》 JFreeChart是一个强大的Java库,它允许开发者创建各种类型的图表,包括曲线图、柱状图、饼状图和分布图等。在当前JS图表库盛行的时代,JFreeChart...

    java图形jfreechart-0.9.16

    1. **图表类型多样**:JFreeChart支持多种图表类型,如折线图、柱状图、饼图、散点图、甘特图、雷达图、热力图以及3D图表等,可以满足数据分析和展示的广泛需求。 2. **定制性强**:每个图表的外观和感觉都可以高度...

    柱状图 圆饼图 曲线图 struts2.0 jfreechart

    JFreeChart则是一个强大的Java图表库,能够生成多种类型的图表,包括柱状图、圆饼图和曲线图,非常适合在数据可视化应用中使用。在Struts2.0中集成JFreeChart,可以为Web应用程序添加丰富的图形展示功能,让数据以...

    jfreechart-学习资料

    这个“jfreechart-学习资料”压缩包显然是一份专为初学者准备的资源集合,其中包含了丰富的教程、说明和示例,帮助初学者快速掌握JFreeChart的使用。 JFreeChart支持多种图表类型,包括柱状图、饼图、线形图、散点...

    Java Web应用开发 58 课堂案例-应用JFreeChart组件实现柱状图.docx

    在本课堂案例中,我们将学习如何使用JFreeChart组件来实现柱状图的绘制。 首先,JSP页面(chart_bar.jsp)是展示柱状图的主要载体。在这个页面中,我们设置了页面的类型、字符编码,并导入了JFreeChart所需的类。第...

    jfreechart-1.0.9-install.pdf

    JFreeChart 提供了多种类型的柱状图,如垂直柱状图、水平柱状图等。 ##### 3.3 折线图 (Line Chart) 折线图适合展示数据随时间变化的趋势。JFreeChart 支持创建标准折线图、时序折线图等多种类型的折线图。 #####...

    《精通Java Web动态图表编程》附JFreeChart -- web图表生成源码

    JFreeChart支持多种图表类型,如柱状图、饼图、线图、散点图等,适合用于数据可视化。 3. **第三章:静态图表生成** 学习如何使用JFreeChart生成静态图表,包括设置图表的各个元素,如标题、图例、轴标签等。此外...

    jfreechart 折线图、饼状图、柱状图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括折线图、饼状图和柱状图等,这些图表广泛应用于数据分析、报表展示以及Web应用程序中。本项目提供了一个实例,展示了如何在Web页面上使用...

    jfreechart与struts2结合,实现折线图、饼状图、柱状图的页面显示

    JFreeChart是一个流行的Java库,专门用于创建各种类型的图表,包括折线图、饼状图和柱状图等。与此同时,Struts2是Java Web开发中常用的MVC框架,它简化了前端与后端的交互。当JFreeChart与Struts2结合时,可以实现...

    jfreechart-1.0.12-javadocs

    JFreeChart 是一个流行的开源Java库,用于创建各种图表,包括折线图、柱状图、饼图、散点图、甘特图等。它广泛应用于数据分析、报告生成以及可视化应用中。JFreeChart 1.0.12 版本是该库的一个稳定版本,提供了丰富...

Global site tag (gtag.js) - Google Analytics