使用JSP+Servlet+Jdbc+Echatrs实现对豆瓣电影Top250的展示

使用JSP+Servlet+Jdbc+Echatrs实现对豆瓣电影Top250的展示

写在前面:

有的小伙伴,会吐槽啦,你这个标题有点长的啊。哈哈 ,好像是的!不过,这个也是本次案例中使用到的关键技术。如果,你正愁不会的数据可视化,那么我接下来,我会带你一步一步的实现这个数据可视化的功能。

效果图:

开发工具:我们选择的是IDEA,你还得准备一个豆瓣top250的数据源,我这里用python爬虫抓取统计了豆瓣top250电影各个国家电影数量。如何你担心,没有数据。先不用担心,我会提供的。

小建议:在学习之前,你可以先把项目的源代码,下载下来,自己可以先跑一边,看一下,整体的效果。然后再接着看后面的步骤,这样会比较好一些。这里我把源代码放在了码云上,地址:https://gitee.com/liuge36/Douban

可能有的小伙伴习惯用Github,这里:https://github.com/liuge36/Douban 码字不易,不喜勿喷

正式开始:

分析:

要如何开始呢?想想,我们现在有mysql里面的数据,然后,只是需要把数据做一个展示,

1.在IDEA中新建一个项目

完整好包结构,规范的包结构是有利于我们后期维护修改代码的

先简单说一下,我们的开发思路,

我们常规操作是在entity中新建一个doubanc的实体类用于封装我们从数据库里面读出来的数据

接着,在dao下去写一个类doubandao用于从数据库中获取到数据,这里传回一个doubanc的实体类对象的集合

然后,使用servlet来调用dao的数据,转发到jsp页面,

这样我们也就实现了显示与代码分离的形式,也是不使用框架技术的常用操作。在这里,我们就依据这个思路开始开发..

2.new一个实体类Doubanc

参照数据库里面表的字段:

,这里,也就只有两个字段。

因为比较简单,直接贴上代码:

package com.csylh.entity;

public class Doubanc {
    private String country;
    private int nums;
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public int getNums() {
        return nums;
    }
    public void setNums(int nums) {
        this.nums = nums;
    }
    public Doubanc(String country, int nums) {
        super();
        this.country = country;
        this.nums = nums;
    }
    public Doubanc() {
        super();
    }

}

3.new一个DoubanDao类

dao类的作用就是与完成与数据库的交互工作,比如,从数据库按照按照我们的需求把数据读取出来,这里,我们直接贴上我的代码,在代码中,每一步我都有详细的解释,这里就使用到了JDBC的技术

package com.csylh.dao;

import com.csylh.entity.Doubanc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DoubanDao {
    public List<Doubanc> getDoubancList(){
        List<Doubanc> doubancList=new ArrayList<Doubanc>();
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet=null;

        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.驱动管理器获取数据库连接
            connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/article","root","123456");
            //3.获取statement,执行sql
            statement = connection.createStatement();
            //4.执行sql,返回结果集
            resultSet= statement.executeQuery("select country,nums from doubanc");
            //循环解析结果集
            while (resultSet.next()){
                //定义变量来收取我们的结果集
                String country=resultSet.getString("country");
                int nums=resultSet.getInt("nums");
                //把这些数据封装到doubanc的对象里面去,
                Doubanc doubanc=new Doubanc(country,nums);
                //把上面的对象添加到集合里面去
                doubancList.add(doubanc);

            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {

            try {
                if(resultSet!=null){
                    resultSet.close();
                }
                if(statement!=null){
                    statement.close();
                }
                if(connection!=null){
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        #不要忘记关闭资源
        return doubancList;
    }

}

4.编写我们的servlet代码

servlet一般用来做数据的调用和处理的。

我们新建一个servlet之后,第一步就是重新我们的init()方法,init()方法在整个servlet的生命周期内只执行一次,所以我们就可以把那些只是需要一次性的操作就ok的,放在这里,

为了方便,我们直接在doget里面调用dopost方法,这也做到了不复写代码这一点,也是一个通用的写法

接下来,就是在dopost中写我们的调用代码了:

就这么简单的几行代码,我们就是实现了从数据库里面把数据读出来,在页面显示为json格式的数据了

接着,就可以在jsp页面调用这个DoubanServlet来获取我们的数据了

修改我们的index.jsp页面,当然,你新建一个也是可以的,我这里就直接修改了,

因为我们是要数据图形化展示,则需要在页面中引入echarts的js文件,如果,你以前根本没有接触过echarts,也是,没有关系的,你可以先到官网看一下那个5分钟上手的教程,地址我也先贴在这里吧:http://echarts.baidu.com/tutorial.html#5 其实,使用也是很简单的

参照官网的说法,你可以看一下,我这里的代码:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/";
%>
<!DOCTYPE HTML>
<html lang="en">
<head>
    <base href="<%=basePath%>">
    <meta charset="UTF-8">
    <script src="echarts.min.js"></script>
    <script src="jquery-1.8.3.min.js"></script>
</head>
<body >

<div id="content" style="margin:40px auto;">
    <div id="myBarDiv" style="height:300px;width:1550px;display:inline-block"></div>
    <div id="myPieDiv" style="height:300px;width:1550px;display:inline-block"></div>
</div>

<script type="text/javascript">
    function loadData(option){

        $.ajax({
            type:"post",   //请求方式
            async:false,            //采用同步传输
            url:‘DoubanServlet‘,   //从刚才的servlet中把数据读取出来
            data:{},
            dataType:‘json‘,

            success:function(result){
                if(result){
                    option.xAxis[0].data=[];
                    for(var i=0;i<result.length;i++){
                        option.xAxis[0].data.push(result[i].country);  //设置横坐标的数据
                    }

                    //初始化series[0]的data
                    option.series[0].data=[];
                    for(var i=0;i<result.length;i++){
                        option.series[0].data.push(result[i].nums);   //设置纵坐标的数据
                    }
                }
            },
            error:function(errorMsg){
                alert("数据加载失败");
            }

        });
    }
    //初始化Echarts
    var myChart=echarts.init(document.getElementById(‘myBarDiv‘));
    var option={
        title:{
            text:‘柱状图‘
        },
        tooltip:{
            show:true
        },
        legend:{
            data:[‘数量‘]
        },
        xAxis:[{

            type:‘category‘,
            axisTick:{
                alignWithLabel: true,//竖线对准文字
                interval:0,   //横坐标的竖线的间隔
            },
            axisLabel:{
                interval:0
            } //横坐标显示全部信息
        }],
        yAxis:[{
            type:‘value‘
        }],
        series:[{
            name:‘数量‘,
            type:‘bar‘,

        }]

    };
    loadData(option);  //加载数据到option
    myChart.setOption(option);  //设置option(画图)
</script>

<script type="text/javascript">
    var myChart=echarts.init(document.getElementById(‘myPieDiv‘));

    function loadData(option){
        $.ajax({
            type:"post",
            async:false,
            url:‘DoubanServlet‘,
            data:{},
            dataType:‘json‘,
            success:function(result){
                if(result){
                    var country=[];
                    var number=[];

                    for(var i=0;i<result.length;i++){
                        country[i]=result[i].country;
                        var obj =new Object();
                        obj.name=result[i].country;
                        obj.value=result[i].nums;
                        number[i]=obj;

                    }
                    var option={
                        title:{
                            text:‘饼状图‘,
                            x:‘center‘
                        },
                        tooltip:{
                            show:true,
                            trigger:‘item‘
                        },
                        legend:{
                            data:country,
                            left:‘left‘,
                            orient:‘vertical‘
                        },
                        series:[{
                            name:‘数量‘,
                            type:‘pie‘,
                            radius:‘60%‘,
                            data:number

                        }]

                    };
                    option.legend.data=country;
                    myChart.setOption(option,true);
                    myChart.setSeries(seriesdata);
                }
            },
            error:function(errorMsg){
                alert("数据加载失败");
            }

        });
    }
</script>
</body>
</html>

接下来,最关键的就是把添加架包了,其实之前,我们写servlet的时候,我们就必须的引入部分架包的,这里,我们的再说明一下:

在WEB-INF目录在新建一个lib目录用于存放架包,添加作为Library root,就可以使用了

接下来,就可以添加tomcat服务器,启动我们的项目了

启动之后,就是可以访问的了,idea会自动跳转的

效果图:

好了,到这里,我们的操作就基本完成了。实现了从数据库把数据图像化展示到页面的功能,觉得感兴趣的小伙伴,不妨一试哟。

原文地址:https://www.cnblogs.com/liuge36/p/9882992.html

时间: 2024-08-03 13:47:32

使用JSP+Servlet+Jdbc+Echatrs实现对豆瓣电影Top250的展示的相关文章

javabean+jsp+servlet+jdbc从软件安装到开发实例

javabean\jsp\servlet\jdbc的作用: JavaBean:用于传递数据,拥有与数据相关的逻辑处理.JSP:从Model接收数据并生成HTML.Servlet:接收HTTP请求并控制Model和View.jdbc:用于配置环境 首先新建course的数据库:包含name,teacher,classroom,id等字段. 源代码及包的分布 package com.hjf.dao; import java.sql.Connection; import java.sql.Result

JSP+Servlet+JDBC+Mysql实现的博客系统

本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/nanpingping/jsp-blog 这次分享个人博客系统,界面简洁大气,功能齐全,是不可多得的比较容易的系统,非常适合毕业设计或者课程设计. 本系统基于JSP+Servlet+JDBC+Mysql.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级:简单 技术栈 编辑器 IntelliJ IDEA 2019.1.1 (Ultimate Edition) 前端技术 基础:html+css+Ja

Node.js学习 爬虫下载豆瓣电影top250图片

利用node.js实现爬虫,并且爬取豆瓣电影top250的列表和图片. 1 什么是node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎 2 什么是爬虫 (又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 3

练习:一只豆瓣电影TOP250的爬虫

练习:一只豆瓣电影TOP250爬虫 练习:一只豆瓣电影TOP250爬虫 ①创建project ②编辑items.py import scrapy class DoubanmovieItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() rank = scrapy.Field() title = scrapy.Field() link = scrapy.Field() rate

【转】爬取豆瓣电影top250提取电影分类进行数据分析

一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了.先贴出使用request库和lxml分析的代码 1 def get_page(i): 2 url = 'https://movie.d

python爬虫练习1:豆瓣电影TOP250

项目1:实现豆瓣电影TOP250标题爬取: 1 from urllib.request import urlopen 2 from bs4 import BeautifulSoup 3 import re 4 5 class doubanSpider(): 6 def __init__(self): 7 """ 8 初始化, 9 页码,URL,存储数据, 10 """ 11 self.page = 0; 12 # "http://mov

scrapy爬取豆瓣电影top250

1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣电影top250 3 4 import scrapy 5 from douban.items import DoubanItem 6 7 8 class DoubanspiderSpider(scrapy.Spider): 9 name = "doubanspider" 10 # allowed_domains = ["movie.douban.com/top250"]注意这里的主页限制

运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250

对于scrapy我们前面已经介绍了简单的应用,今天我们用一个完整的例子,爬取豆瓣电影TOP250来做一个小的练习,把scrapy阶段做一个总结. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 2.1 需要保存的数据 首先确定我们要获取的内容,在items中定义字段,来将非结构化数据生成结构化数据,获取的内容主要包括:排名.电影名称.得分.评论人数.如下

Python小爬虫——抓取豆瓣电影Top250数据

写LeetCode太累了,偶尔练习一下Python,写个小爬虫玩一玩~ 确定URL格式 先找到豆瓣电影TOP250任意一页URL地址的格式,如第一页为:https://movie.douban.com/top250?start=0&filter=,分析该地址: https:// 代表资源传输协议使用https协议: movie.douban.com/top250 是豆瓣的二级域名,指向豆瓣服务器: /top250 是服务器的某个资源: start=0&filter= 是该URL的两个参数,