`

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实现Java中饼状图、柱状图等图表并在Jsp中显示

    本例是利用myEclipse + tomcat编译运行的,利用JfreeChart(从网上可下载的java的Jar包)编写的将数据以柱状图、饼状图等图表的形式显示在Jsp页面中

    java使用JFreeChart制作柱形图

    将数据库中的数据以柱形图的形式显示出来,该例子中显示的是3D形式的柱形图,可以根据需要自行更改柱形图的样式。同时柱形图不是生成图片,而是直接显示在页面上。

    jfreechart-0.9.17.jar and jcommon.jar

    jfreechart绘图所需的jar包。和一个做好的jsp页面,相当于一个小demo,主要绘制柱状图、和多坐标轴组合柱状图。

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

    jfreechart 折线图、饼状图、柱状图在web页面上的应用,自己在网上找到点资料,然后写了个示例。 导入的myeclipse中部署即可。

    jfreechart源代码在swt和jsp页面

    利用jfreechart在swt和jsp页面生成的饼图、柱状图、时间序列图

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

    NULL 博文链接:https://aokunsang.iteye.com/blog/706493

    JFreeChart使用总结

    JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。...

    jfreeChart报表小demo

    利用jfreeChart开发的饼图、柱状图、线图小案例,结合itext页面pdf展示,适合入门学习。

    JFreeChart例子工程,web页面展示图片

    JFreeChartWebDemo通过web页面来显示JFreeChart的画图能力

    JFreeChart画图

    用JFreeChart设计各种基于java的图形界面,如曲线图,柱状图,折线图,甘特图等,并且在JSP页面显示

    jfreechart试例代码

    使用myEclipse6.0.1工具开发的简单使用jfreechart报表插件.包括jsp页面调用显示报表.

    SpringMVC JfreeChart DEMO

    基于spring + JFREECHART DEMO 实现 柱状图 、饼图、折线图、仪表图 支持3D效果 访问路径:如下 http://127.0.0.1/springMvcDemo/bhCdmaShowBar3D

    jfreechart依赖jar包

    java图形化数据分析,生成柱状图,折线图,饼状图等,jfreechart 依赖jar包,主要是java后台的数据图形化处理,导出使用,与前端页面无关,也可生成图片返回给前端

    JFreeChart所需的jar包

    用于开发jsp页面的各种统计图,如:饼图、散点图、折线图、柱状图等。

    JfreeChart Demo示例包括所需架包

    JfreeChart Demo示例,其中示例分别实现了,柱状图和饼图,而至于在Jsp页面中显示出对应生成的图片还在学习中,即将放送。

    jfreechar的使用

    JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。...

    jsp数据报表(柱状,饼状,折线)

    import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardLegend; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.plot....

    javaweb投票系统源码-java-project2:在线投票:springmvc+jdbc+jsp+mysql

    1.页面展示使用jsp,用到了jquery,bootstrap3,投票展示用JFreeChart绘制的柱状图,有些页面的效果源码来自源码之家(代码的复用,哈哈哈,侵权我也没钱赔) 2.控制层使用的是springmvc 3.数据库mysql,使用的原生...

Global site tag (gtag.js) - Google Analytics