最近利用JFreeChart和MySQL数据库做了一个JSP网页,展现Android Martet全球10个国家的TOP800游戏排名的曲线走势

准备知识,请先阅读我先前写的博客
JFreeChart学习示例

Linux JSP连接MySQL数据库

需导入jar包如下:

完整代码:

<%@ page language="java" contentType="text/html" pageEncoding="utf-8" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page language="java" import="java.sql.*" %> <%@ page language="java" import="java.io.*" %> <%@ page language="java" import="java.io.*" %> <%@ page language="java" import="java.awt.*" %> <%@ page language="java" import="org.jfree.data.*" %> <%@ page language="java" import="org.jfree.data.category.*" %> <%@ page language="java" import="org.jfree.data.general.*" %> <%@ page language="java" import="org.jfree.chart.*" %> <%@ page language="java" import="org.jfree.chart.entity.*" %> <%@ page language="java" import="org.jfree.chart.plot.*" %> <% // GLOBLE PARAMS // MySQL 连接JDBC String MYSQL_DRIVER = "com.mysql.jdbc.Driver"; String MYSQL_URL = "jdbc:mysql://localhost:3306/top800"; // 数据库查询语句 String chartTitle = "GameName of Country"; String sql = "select * from (select name, id, dtime, top, country, category, rating, ratingcount, download, price, version, filesize, requireandroid, url from gametop800 where name like \"%3D Bowling%\" and country = \"usa\" order by dtime desc limit 0, 2147483647) as tbl order by dtime asc"; %> <%@page import="org.jfree.chart.plot.PlotOrientation"%> <%@page import="java.util.Date"%> <%@page import="org.jfree.chart.servlet.ServletUtilities"%> <%@page import="org.jfree.chart.axis.NumberAxis"%> <%@page import="org.jfree.chart.axis.CategoryAxis"%> <%@page import="org.jfree.chart.axis.CategoryLabelPositions"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Top800 Game Free Chart Line</title> </head> <body> <center> <form method="post"> <div style="margin: auto 30px; width: 1000px" > <select name="game_type"> <option value="游戏名称">游戏名称</option> <option value="游戏包名">游戏包名</option> </select>: <input type="text" name="game_keyword" style="width:300px" />      所属国家: <select name="countryname" style="width:100px"> <option value="usa">usa</option> <option value="england">england</option> <option value="france">france</option> <option value="japan">japan</option> <option value="italy">italy</option> <option value="german">german</option> <option value="india">india</option> <option value="spain">spain</option> <option value="russia">russia</option> <option value="china">china</option> <option value="eu">eu</option> </select>      记录时间: <select name="game_dtime"> <option value="全部">全部</option> <option value="最近一周">最近一周</option> <option value="最近一月">最近一月</option> </select>      <input type="submit" value="查询" style="width:60px"> </div> <hr style="width: 80%" /> <% String game_type = new String("游戏名称"); String game_keyword = "3D Bowling"; String countryname = "usa"; String game_dtime = new String("全部"); request.setCharacterEncoding("utf-8"); game_type = request.getParameter("game_type"); game_keyword = request.getParameter("game_keyword"); countryname = request.getParameter("countryname"); game_dtime = request.getParameter("game_dtime"); int limitTop = Integer.MAX_VALUE; game_type = game_type == null ? game_type = "游戏名称" : game_type.trim(); game_keyword = game_keyword == null ? game_keyword = "3D Bowling" : game_keyword.trim(); countryname = countryname == null ? countryname = "usa" : countryname.trim(); game_dtime = game_dtime == null ? game_dtime = "全部" : game_dtime.trim(); if (game_dtime != null) { if (game_dtime.equals("全部")) { limitTop = Integer.MAX_VALUE; } else if (game_dtime.equals("最近一周")) { limitTop = 7; } else if (game_dtime.equals("最近一月")) { limitTop = 30; } else { limitTop = Integer.MAX_VALUE; } } if (game_keyword != null && game_keyword != "") { chartTitle = game_keyword + " of " + countryname; if (game_type.equals("游戏名称")) { sql = "select * from (select name, id, dtime, top, country, category, rating, ratingcount, download, price, version, filesize, requireandroid, url from gametop800 where name like \"%" + game_keyword + "%\" and country = \"" + countryname + "\" order by dtime desc limit 0, " + limitTop + ") as tbl order by dtime asc"; } else if (game_type.equals("游戏包名")) { sql = "select * from (select name, id, dtime, top, country, category, rating, ratingcount, download, price, version, filesize, requireandroid, url from gametop800 where id = \"" + game_keyword + "\" and country = \"" + countryname + "\" order by dtime desc limit 0, " + limitTop + ") as tbl order by dtime asc"; } else { sql = "select * from (select name, id, dtime, top, country, category, rating, ratingcount, download, price, version, filesize, requireandroid, url from gametop800 where name like \"%" + game_keyword + "%\" and country = \"" + countryname + "\" order by dtime desc limit 0, " + limitTop + ") as tbl order by dtime asc"; } } else { game_type = "游戏名称"; game_keyword = "3D Bowling"; countryname = "usa"; game_dtime = "全部"; } %> <table border="2" width="40%"> <tr> <td valign="middle"><b><%=game_type%>:</b></td> <td><%=game_keyword%> </td> </tr> <tr> <td valign="middle"><b>所属国家:</b></td> <td><%=countryname%></td> </tr> <tr> <td valign="middle"><b>记录时间:</b></td> <td><%=game_dtime%></td> </tr> </table> <hr style="width: 80%" /> <% DefaultCategoryDataset dataset = new DefaultCategoryDataset(); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 连接 MySQL 数据库 Class.forName(MYSQL_DRIVER).newInstance(); conn = DriverManager.getConnection(MYSQL_URL, "root", ""); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); // 遍历读取的数据集 while (rs.next()) { String name = rs.getString(1); String dtime = rs.getString(3); int top = rs.getInt(4); if (name != null && dtime != null) { dataset.addValue(top, name, dtime); // 构造JFreeChart的数据集dataset } } } catch (Exception e) { System.err.println(e.getMessage()); } JFreeChart chart = ChartFactory.createLineChart( chartTitle, // 标题 "记录时间", // 横轴名称 "游戏排名", // 纵轴名称 dataset, // 数据集 PlotOrientation.VERTICAL, // 垂直视图 true, true, true ); final CategoryPlot plot = (CategoryPlot) chart.getPlot(); plot.setBackgroundPaint(Color.lightGray); // 背景色 plot.setRangeGridlinePaint(Color.blue); // 横轴虚线 plot.setRangeGridlinesVisible(true); // 横轴虚线是否可见 final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setAutoRangeMinimumSize(1); // 距离为1 rangeAxis.setAutoRangeIncludesZero(true); // 从零计算 rangeAxis.setInverted(true); // 纵轴逆序(原点到顶端,是从大到小) final CategoryAxis categoryAxis = plot.getDomainAxis(); if (limitTop == 7) { categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD); // 横轴标准显示(水平) } else { categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴45度显示(倾斜) } FileOutputStream fos_jpg = null; String file_jpg = null; String url_jpg = null; try { final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); file_jpg = ServletUtilities.saveChartAsJPEG(chart, 1200, 600, info, null); // 生成图片 url_jpg = request.getContextPath() + "/servlet/DisplayChart?filename=" + file_jpg; // 图片路径 } catch (Exception e) { out.println(e); } finally { try { fos_jpg.close(); } catch (Exception e) { e.printStackTrace(); } } %> <img src=<%=url_jpg%> border="1" /> <!-- 显示图片(url_jpg为JFreeChart生成图片的路径) --> <hr style="width: 80%" /> <table border="2" borderColor="#00000" cellPadding="0" cellSpacing="0" width="auto" > <tbody> <tr> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>name</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>id</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>dtime</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>top</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>country</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>category</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>rating</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>ratingcount</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>download</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>price</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>version</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>filesize</b></font></td> <td bgColor="#008080" height="28" align="center" valign="middle"> <font color="#ffffff"><b>requireandroid</b></font></td> </tr> <% try { rs = stmt.executeQuery(sql); while (rs.next()) { %> <tr> <td height="18" vAlign="middle" align="center"><a href="<%=rs.getString(14)%>" target="_blank"><%=rs.getString(1)%></a></td> <td height="18" valign="middle" align="center"><%=rs.getString(2)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(3)%></td> <td height="18" valign="middle" align="center" bgColor="#ffcc68"><%=rs.getInt(4)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(5)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(6)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(7)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(8)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(9)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(10)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(11)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(12)%></td> <td height="18" valign="middle" align="center"><%=rs.getString(13)%></td> </tr> <% } } catch (Exception e) { System.out.println(e.getMessage()); } %> </tbody> </table> <% try { rs.close(); stmt.close(); conn.close(); } catch (Exception e) { System.out.println(e.getMessage()); } %> </form> </center> </body> </html>效果图:

这是我们公司出品的经典休闲游戏——3D Bowling,目前已经进入Android Market全球排名前10

转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2011/10/29/2484070.html

JFreeChart项目实例相关推荐

  1. Linux 抓取网页实例(shell+awk)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 上一篇博 ...

  2. 50种制作图表JS库

    在很多项目中都会有在前端展现数据图表的需求,而在开发过程中,开发者往往会使用一些JavaScript库,从而更有效地达到想要的目标.最近,TechSlide上的一篇文章总结了50种用于展现图表的Jav ...

  3. 报表应用系列——图表JFreeChart: 第 4 章 折线图

    双击代码全选 1 2 3 4 5 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100 ...

  4. Java项目:学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 这个项目适合SSM框架的初学者(涉及大量增删改查,很适合初学者)以及对Shiro安全框架和Poi技术感兴趣的同学. 项目功能: 用户管理功能 ...

  5. 【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列

    网上设计模式的文章很多 虫子就不再和大家扯一些没有营养的理论 开此系列博文 一方面因为自己颓废了大半年 趁此机会回顾一下 另一方面希望能够帮助新人走出设计模式的误区, 如何做好设计模式 1.在发掘新的 ...

  6. jfreechart的使用

    jfreechart 简介(百度百科): JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets ...

  7. Open Flash Chart组件的使用 及 与 jfreechart, FusionCharts 的比较

    http://crabdave.javaeye.com/blog/189653 Open Flash Chart组件的使用 简介 OpenFlashChart是一个开源的报表制作组件,该组件能够自动生 ...

  8. 结合项目实例 回顾传统设计模式(九)迭代器模式

    关于迭代器模式,我们所需要知道的第一件事情就是它依赖于一个名为迭代器的接口.一旦我们有了这个接口,就可以为各种那个对象集合实现迭代器:数组.列表.散列表. 项目实例我们就拿用户角色模块来举例 背景 1 ...

  9. java 柱状图下载_(JFreeChart)Java图表制作

    (JFreeChart)Java图表制作软件时一个灵活的设计,很容易扩展,和目标服务器端和客户端应用程序;,支持多种图表类型. 输出类型也是多样化.包括Swing组件.图像文件(包括PNG和JPEG) ...

最新文章

  1. 大学生计算机实验基础考试,大学生计算机基础考试试题
  2. wamp php http 1.0500,HTTP 错误 500.0 - Internal Server Error C:\php-5.3.5\php.exe - FastCGI 进程意外退出...
  3. 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
  4. 企业进销存管理系统 email_进销存财务软件选它就对了!
  5. 【文件处理】——字典写入json文件或TXT文件,读取文件中的字典TypeError: Object of type ‘ndarray‘ is not JSON serializable错误解决方法
  6. WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()
  7. java观察者模式本质_6.[研磨设计模式笔记]观察者模式
  8. kubernetes入门(02)kubernetes的架构
  9. 为红米寻找新的方向 卢伟冰向网友征集老人机需求
  10. php将汉字转换为gb2312编码,php实现utf-8和GB2312编码相互转换
  11. 无法打开包括文件:“afxcontrolbars.h”
  12. Silverlight开发之MVVM模式
  13. rails rake和示例
  14. C语言程序设计--宏和预处理
  15. Rancher快速入门
  16. 使用C#将RGB24转换为YUV420格式
  17. 2022-2027年中国电容器行业市场全景评估及发展战略规划报告
  18. (三)Android系统启动流程
  19. 【技能】Chrome扩展程序的使用
  20. poj1753Flip Game

热门文章

  1. spring boot : Invalid Keystore format Error 解决方法
  2. 判定重大风险有哪几种_化工生产安全管理信息化平台可以解决哪些重大问题
  3. html日期英文状态显示不出来,html 时间控件插件laydate, 显示时分,不显示秒
  4. select 统计数量_leetcode题库-sql练习精讲系列--十三、简单分组统计类问题
  5. oracle变量绑定代码,Oracle 绑定变量
  6. 深入理解javascript原型和闭包(9)——简述【执行上下文】下
  7. 最好用的 Python 虚拟环境,没有之一
  8. 用Pandas来美化一波图表
  9. 新工具上线!只需2步助你轻松学爬虫!
  10. 52条实用经验,SQL优化不再难!