当前位置:   article > 正文

JavaWeb可视化:Web+Echarts案例:豆瓣日剧豆列电影信息可视化(柱状图、饼状图、折线图)_可视化电影评分系统 echart + mapreduce + javaweb

可视化电影评分系统 echart + mapreduce + javaweb

柱状图案例

柱状图用来比较多项目的数值情况,从构成上来说,柱状图以坐标轴上的长方形元素作为变量,以此来达到展现并比较数据情况的目的。柱状图形式多种多样,以适应不同场合数据展示,常用的有如下形式:

可以参考http://echarts.baidu.com/echarts2/doc/example.html  http://echarts.baidu.com/examples/#chart-type-bar根据自己的实际需求和审美选择不同的形式。

常用配置项参数:

  • title:标题组件,包含主标题和副标题。
  • title.show boolean[ default: true ],是否显示标题组件
  • title.text string[ default: '' ],主标题文本,支持使用 \n 换行
  • title.target string[ default: 'blank' ],指定窗口打开主标题超链接
  • title.target string[ default: 'blank' ],指定窗口打开主标题超链接。可选:'self' 当前窗口打开;'blank' 新窗口打开
  • title.textStyle.color Color[ default: '#333' ],主标题文字的颜色
  • title.textStyle.fontStyle string[ default: 'normal' ],主标题文字字体的风格,可选:'normal','italic','oblique'
  • title.textStyle.verticalAlign string文字垂直对齐方式,默认自动。可选:'top','middle','bottom
  • title.subtext string[ default: '' ],副标题文本,支持使用 \n 换行
  • legend:图例组件
  • grid:直角坐标系内绘图网格,单个 grid 内最多可以放置上下两个 X 轴,左右两个 Y 轴。可以在网格上绘制折线图,柱状图,散点图(气泡图)。
  • xAxis:直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放上下两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠
  • yAxis:直角坐标系 grid 中的 y 轴,一般情况下单个 grid 组件最多只能放左右两个 y 轴,多于两个 y 轴需要通过配置 offset 属性防止同个位置多个 Y 轴的重叠
  • color:调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色

需求:将WebMagic爬虫获取到的豆瓣电影的评分以柱状图图的形式展现出来。

 1.  使用之前使用WebMagic爬取的豆瓣豆列电影数据,数据库movies表如下:

2. 新建Java Web项目,红框处需要勾选

3. 将下载的jstl.jar、standard.jar和mysql-connector-java-5.1.6-bin.jar拷贝至lib目录下;在WebContent下新建res目录,在res目录下新建js目录,然后将echarts.min.js、jquery-3.3.1.min.js拷贝到js目录下。整体目录结构如下:

4. 编写Movie类,封装电影信息

  1. package com.liudm.entity;
  2. public class Movie {
  3. //电影信息
  4. private int m_id;
  5. private String m_title;
  6. private String m_urls;
  7. private float m_ratings;
  8. //电影详细信息
  9. private String m_dir;
  10. private String m_actor;
  11. private String m_type;
  12. private String m_time;
  13. public Movie() {
  14. super();
  15. }
  16. public Movie(String m_title, String m_urls, float m_ratings,
  17. String m_dir, String m_actor, String m_type, String m_time) {
  18. super();
  19. this.m_title = m_title;
  20. this.m_urls = m_urls;
  21. this.m_ratings = m_ratings;
  22. this.m_dir = m_dir;
  23. this.m_actor = m_actor;
  24. this.m_type = m_type;
  25. this.m_time = m_time;
  26. }
  27. public Movie(int m_id, String m_title, String m_urls, float m_ratings,
  28. String m_dir, String m_actor, String m_type, String m_time) {
  29. super();
  30. this.m_id = m_id;
  31. this.m_title = m_title;
  32. this.m_urls = m_urls;
  33. this.m_ratings = m_ratings;
  34. this.m_dir = m_dir;
  35. this.m_actor = m_actor;
  36. this.m_type = m_type;
  37. this.m_time = m_time;
  38. }
  39. public int getM_id() {
  40. return m_id;
  41. }
  42. public void setM_id(int m_id) {
  43. this.m_id = m_id;
  44. }
  45. public String getM_title() {
  46. return m_title;
  47. }
  48. public void setM_title(String m_title) {
  49. this.m_title = m_title;
  50. }
  51. public String getM_urls() {
  52. return m_urls;
  53. }
  54. public void setM_urls(String m_urls) {
  55. this.m_urls = m_urls;
  56. }
  57. public float getM_ratings() {
  58. return m_ratings;
  59. }
  60. public void setM_ratings(float m_ratings) {
  61. this.m_ratings = m_ratings;
  62. }
  63. public String getM_dir() {
  64. return m_dir;
  65. }
  66. public void setM_dir(String m_dir) {
  67. this.m_dir = m_dir;
  68. }
  69. public String getM_actor() {
  70. return m_actor;
  71. }
  72. public void setM_actor(String m_actor) {
  73. this.m_actor = m_actor;
  74. }
  75. public String getM_type() {
  76. return m_type;
  77. }
  78. public void setM_type(String m_type) {
  79. this.m_type = m_type;
  80. }
  81. public String getM_time() {
  82. return m_time;
  83. }
  84. public void setM_time(String m_time) {
  85. this.m_time = m_time;
  86. }
  87. @Override
  88. public String toString() {
  89. return "Movie [m_id=" + m_id + ", m_title=" + m_title + ", m_urls="
  90. + m_urls + ", m_ratings=" + m_ratings + ", m_dir=" + m_dir
  91. + ", m_actor=" + m_actor + ", m_type=" + m_type + ", m_time="
  92. + m_time + "]";
  93. }
  94. }

5. 编写mysql.properties属性文件,存储连接数据库的相关配置信息:其中数据库名为movies

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/movies
  3. username=root
  4. pwd=nothing

6. 编写MySqlUtil.java,连接数据库的相关内容

  1. package com.liudm.utils;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.PreparedStatement;
  7. import java.sql.ResultSet;
  8. import java.sql.SQLException;
  9. import java.util.Properties;
  10. public class MySqlUtil {
  11. // 读取属性文件,获得连接
  12. static Connection con = null;
  13. static Properties ps = new Properties();
  14. static {
  15. // 读取属性文件
  16. InputStream in = MySqlUtil.class.getClassLoader().getResourceAsStream("mysql.properties");
  17. try {
  18. ps.load(in);
  19. String driver = ps.getProperty("driver");
  20. String url = ps.getProperty("url");
  21. String username = ps.getProperty("username");
  22. String pwd = ps.getProperty("pwd");
  23. System.out.println(driver + url + username + pwd);
  24. Class.forName(driver);
  25. con = DriverManager.getConnection(url, username, pwd);
  26. } catch (IOException e1) {
  27. // TODO Auto-generated catch block
  28. e1.printStackTrace();
  29. } catch (ClassNotFoundException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. } catch (SQLException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. }
  36. }
  37. public static Connection getConnection() {
  38. return con;
  39. }
  40. // 关闭资源
  41. public static void closeRes(ResultSet rs, PreparedStatement ps, Connection con) {
  42. if (rs != null) {
  43. try {
  44. rs.close();
  45. } catch (SQLException e) {
  46. // TODO Auto-generated catch block
  47. e.printStackTrace();
  48. }
  49. }
  50. if (con != null) {
  51. try {
  52. con.close();
  53. } catch (SQLException e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57. }
  58. if (ps != null) {
  59. try {
  60. ps.close();
  61. } catch (SQLException e) {
  62. // TODO Auto-generated catch block
  63. e.printStackTrace();
  64. }
  65. }
  66. }
  67. }

7. 编写接口MovieDao.java,编写抽象方法,实现电影信息的查询

  1. package com.liudm.dao;
  2. import java.util.List;
  3. import com.liudm.entity.Movie;
  4. public interface MovieDao {
  5. public List<Movie> queryAllMovies();
  6. }

8. 编写MovieDaoImpl.java,重写queryAllMovies方法

  1. package com.liudm.dao;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import com.liudm.entity.Movie;
  9. import com.liudm.utils.MySqlUtil;
  10. public class MovieDaoImpl implements MovieDao{
  11. Connection con = null;
  12. Movie movie = null;
  13. PreparedStatement pre = null;
  14. ResultSet rs = null;
  15. @Override
  16. public List<Movie> queryAllMovies() {
  17. con = MySqlUtil.getConnection();
  18. List list = new ArrayList();
  19. String sql="select * from movies limit 30";
  20. try {
  21. pre=con.prepareStatement(sql);
  22. rs= pre.executeQuery();
  23. while(rs.next()){
  24. int mid=rs.getInt("m_id");
  25. String mtitle=rs.getString("m_title");
  26. String murls=rs.getString("m_urls");
  27. float mratings=rs.getFloat("m_ratings");
  28. String mdir=rs.getString("m_dir");
  29. String mactor=rs.getString("m_actor");
  30. String mtype=rs.getString("m_type");
  31. String mtime=rs.getString("m_time");
  32. movie = new Movie(mid, mtitle, murls, mratings, mdir, mactor, mtype, mtime);
  33. list.add(movie);
  34. }
  35. } catch (SQLException e) {
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. }finally{
  39. //MySQLUtil.closeRes(rs, pre, con);
  40. }
  41. return list;
  42. }
  43. }

9. 新建Servlet包。每开发一个Servlet,都要在web.xml中配置Servlet才能够使用,这实在是很头疼的事情,所以Servlet3.0之后提供了注解(annotation),使得不再需要在web.xml文件中进行Servlet的部署描述,简化开发流程。

编写QueryMovieServlet.java,在doGet方法中获取dao层数据并将其存储在request中:

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号