# 实验三:全球新型冠状病毒实时数据统计应用程序的设计与实现
**Repository Path**: dutaoGe/exp3-covid
## Basic Information
- **Project Name**: 实验三:全球新型冠状病毒实时数据统计应用程序的设计与实现
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-11-13
- **Last Updated**: 2021-05-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 东莞理工学院网络空间安全学院
| **课程名称:** | 企业级开发框架专题 | **学期**:2020秋季 |
| :----------------- | :--------------------------------------------------: | :------------------: |
| **实验名称**: | **全球新型冠状病毒实时数据统计应用程序的设计与实现** | **实验序号**:三 |
| **姓名**:黄汉韬 | **学号**:201841413109 | **班级**:18网工1班 |
| **实验地址**:线上 | **实验日期**:2020-11-9 and 16 | **指导老师**:黎志雄 |
| **教师评语**:XXX | **实验成绩**:XXX | **同组同学**:无 |
## 实验三 全球新型冠状病毒实时数据统计应用程序的设计与实现
### 实验目的
>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. IntelliJ IDEA
>4. commons-csv 1.8+
### 实验任务
#### 任务一
> 通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目。
使用 Spring Initializr 初始化项目
#### 任务二
> 添加功能模块:spring MVC、lombok、commons-csv等
在 pom 文件添加相关依赖
#### 任务三
> 爬取全球冠状病毒实时统计数据。(Java,Spring)
使用URI对url进行编译构建,定义 RequestEntity 请求体,使用 RestTemplate 爬取数据返回 ResponseEntity ,再通过 Stream 生成数据集 Iterable 并返回。
#### 任务四
> 使用Spring框架自带的RestTemplate工具类爬取数据。
将 RestTemplate 注入容器,并自动装配 restTemplate

爬取过程任务三已列出。
#### 任务五
> 分析csv文件的数据结构,定义model类。
为爬取的数据定义 model 类

#### 任务六
> 使用Apache Commons CSV组件解释CSV文件。
解析 CSV 文件数据,获取所需数据进行封装返回
#### 任务七
> 使用Spring框架自带的计划任务功能定时更新统计数据。
使用 @EnableScheduling 注解开启计划任务功能

在初始化数据方法添加 @Scheduled ,定义属性 cron 为 0 0 1 * * *

#### 任务八
> 要确保应用程序启动时,获取一次统计数据。
初始化数据方法添加注解 @PostConstruct , 使得该方法在服务器加载Servlet的时候运行一次

#### 任务九
> 单元测试。
编写 IndexControllerTests 单元测试
编写 CovidDataProviderTests 单元测试
#### 任务十
> 定义Cotroller控制器。
定义控制器,为前端提供数据,并且以封装结果集 Result 进行 Json 数据格式返回
#### 任务十一
> 定义前端数据展示页面。
前端使用 vue 搭建,通过 axios 请求后端的数据对界面进行渲染
启动后端服务后,前端执行==npm run serve==命令开启服务
首页
中国界面
搜索界面
