# lab-03 **Repository Path**: logicsi/lab-03 ## Basic Information - **Project Name**: lab-03 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-12 - **Last Updated**: 2021-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实验三 全球新型冠状病毒实时数据统计应用程序的设计与实现 ## 一、实验目的 1. 掌握使用Spring框架自带的RestTemplate工具类爬取数据; 2. 掌握使用Spring框架自带的计划任务功能; 3. 掌握使用Apache Commons CSV组件解析CSV文件; 4. 掌握使用Java 8的Stream API处理集合类型数据; 5. 了解使用模板引擎或前端框架展示数据。 ## 二、实验环境 1. JDK 1.8或更高版本 2. Maven 3.6+ 3. IntellJ IDEA 4. commons-csv 1.8+ ## 三、实验任务 ##### 1. 通过IntellJ IDEA的Spring Initializr向导创建Spring Boot项目。 ##### 2.添加功能模块:spring MVC、lombok、commons-csv等。 ![image-20210512160647252](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210512160647252.png) ##### 3.爬取全球冠状病毒实时统计数据。 ​ 在Github上,有一个由约翰·霍普金斯大学系统科学与工程中心(JHU CSSE)运营的2020年新型冠状病毒可视化仪表板的数据仓库,大家可以从该仓库中爬取全球新型冠状病毒最新的统计数据。 ​ Github仓库地址:https://github.com/CSSEGISandData/COVID-19 ​ 该仓库会把全球新型冠状病毒最新的统计数据汇总到一个csv文件上,获取数据时,获取这个csv文件即可。 ​ Gitee地址:https://gitee.com/dgut-sai/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv ##### 4.使用Spring框架自带的RestTemplate工具类爬取数据。 ​ ![image-20210527134332379](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134332379.png) ##### 5.分析CSV文件的数据结构,定义model类。 ![image-20210527134444181](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134444181.png) ##### 6.使用Apache Commons CSV 组件解释CSV文件,并把所有model类的对象组织为一个集合 如List,最终这个CSV 文件会转换为一个List对象,然后通过实际的业务逻辑,访问这个List即可。 ![image-20210527134559081](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134559081.png) ##### 7.使用Spring框架的自带的计划任务功能定时更新统计数据。 在配置类上开启计划任务:使用@EnableScheduling ![image-20210527134956865](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134956865.png) 在要执行计划的方法上使用@ Scheduled注解,声明这是一个计划任务。 ![image-20210527134746873](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134746873.png) 在属性文件自定义属性配置cron表达式,如下图: ![image-20210527135434466](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527135434466.png) ##### 8.确保应用程序启动是,获取一次统计数据。 在执行方法上使用@PostConstruct注解 ![image-20210527134746873](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527134746873.png) 9.单元测试 测试service ![image-20210527141537169](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527141537169.png) ![image-20210527141724892](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527141724892.png) ##### 10.定义Controller控制器 ![image-20210527142023869](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527142023869.png) 测试Controller ![image-20210527142249482](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527142249482.png) ![image-20210527142431957](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527142431957.png) ##### 11.定义前端数据展示页面。 ![image-20210527182901718](https://gitee.com/logicsi/pic-bed/raw/master/img/image-20210527182901718.png)