# 实验三:全球新型冠状病毒实时数据统计应用程序的设计与实现 **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 初始化项目 image-20201113200029271 #### 任务二 > 添加功能模块:spring MVC、lombok、commons-csv等 在 pom 文件添加相关依赖 image-20201113200230786 #### 任务三 > 爬取全球冠状病毒实时统计数据。(Java,Spring) 使用URI对url进行编译构建,定义 RequestEntity 请求体,使用 RestTemplate 爬取数据返回 ResponseEntity ,再通过 Stream 生成数据集 Iterable 并返回。  #### 任务四 > 使用Spring框架自带的RestTemplate工具类爬取数据。 将 RestTemplate 注入容器,并自动装配 restTemplate ![image-20201113201343077](https://images.gitee.com/uploads/images/2020/1113/213807_b137bc87_8032704.png) 爬取过程任务三已列出。 #### 任务五 > 分析csv文件的数据结构,定义model类。 为爬取的数据定义 model 类 ![image-20201113200748709](https://images.gitee.com/uploads/images/2020/1116/233533_048e4aba_8032704.png) #### 任务六 > 使用Apache Commons CSV组件解释CSV文件。 解析 CSV 文件数据,获取所需数据进行封装返回 image-20201113201140276 #### 任务七 > 使用Spring框架自带的计划任务功能定时更新统计数据。 使用 @EnableScheduling 注解开启计划任务功能 ![image-20201113201510617](https://images.gitee.com/uploads/images/2020/1113/213958_1dd985d0_8032704.png) 在初始化数据方法添加 @Scheduled ,定义属性 cron 为 0 0 1 * * * ![image-20201113201611640](https://images.gitee.com/uploads/images/2020/1116/233807_dea9e378_8032704.png) #### 任务八 > 要确保应用程序启动时,获取一次统计数据。 初始化数据方法添加注解 @PostConstruct , 使得该方法在服务器加载Servlet的时候运行一次 ![a](https://images.gitee.com/uploads/images/2020/1116/233839_b50beb79_8032704.png) #### 任务九 > 单元测试。 编写 IndexControllerTests 单元测试 image-20201113204302294 编写 CovidDataProviderTests 单元测试 image-20201113204402954 #### 任务十 > 定义Cotroller控制器。 定义控制器,为前端提供数据,并且以封装结果集 Result 进行 Json 数据格式返回 image-20201113204603044 image-20201113204640670 #### 任务十一 > 定义前端数据展示页面。 前端使用 vue 搭建,通过 axios 请求后端的数据对界面进行渲染 启动后端服务后,前端执行==npm run serve==命令开启服务 首页  中国界面 image-20201113205411509 搜索界面 ![image-20201113205440474](https://images.gitee.com/uploads/images/2020/1113/214320_54be3423_8032704.png)