请求响应-响应-案例

案例需求

加载并解析emp.xml文件中的数据,完成数据处理,并在页面展示

emp.xml文件代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<emps><emp><name>金毛狮王</name><age>55</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg</image><!-- 1: 男, 2: 女 --><gender>1</gender><!-- 1: 讲师, 2: 班主任 , 3: 就业指导 --><job>1</job></emp><emp><name>白眉鹰王</name><age>65</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg</image><gender>1</gender><job>1</job></emp><emp><name>青翼蝠王</name><age>45</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg</image><gender>1</gender><job>2</job></emp><emp><name>紫衫龙王</name><age>38</age><image>https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg</image><gender>2</gender><job>3</job></emp>
</emps>

步骤

  • 在pom.xml文件中引入dom4j的依赖,用于解析XML文件
  • 引入资料中提供解析XML的工具类XMLParserUtils、对应的实体类Emp、XML文件emp.xml
  • 引入资料中提供的静态文件,放在resource下的static目录下
  • 编写Controller程序,处理请求,响应数据

具体Controller类代码如下:

package com.example.Controller;import com.example.POJO.Emp;
import com.example.POJO.Result;
import com.example.utils.XmlParserUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class EmpController {@RequestMapping("listEmp")public Result List() {// 1.加载并解析emp.xml文件String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();List<Emp> empList = XmlParserUtils.parse(file, Emp.class);// 2.对数据进行转换处理empList.stream().forEach(emp -> {// 处理gender: 1:男;2:女String gender = emp.getGender();if ("1".equals(gender)) {emp.setGender("男");} else if ("2".equals(gender)) {emp.setGender("女");}// 处理job:1:讲师;2:班主任;3:就业辅导String job = emp.getJob();if ("1".equals(job)) {emp.setJob("讲师");} else if ("2".equals(job)) {emp.setJob("班主任");} else if ("3".equals(job)) {emp.setJob("就业辅导");}});// 3.响应数据return Result.success(empList);}
}

基于Vue框架开发的前端框架,具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>员工信息</title>
</head><link rel="stylesheet" href="element-ui/index.css">
<script src="./js/vue.js"></script>
<script src="./element-ui/index.js"></script>
<script src="./js/axios-0.18.0.js"></script><body>
<h1 align="center">员工信息列表展示</h1>
<div id="app"><el-table :data="tableData" style="width: 100%" stripe border><el-table-column prop="name" label="姓名" align="center" min-width="20%"></el-table-column><el-table-column prop="age" label="年龄" align="center" min-width="20%"></el-table-column><el-table-column label="图像" align="center" min-width="20%"><template slot-scope="scope"><el-image :src="scope.row.image" style="width: 80px; height: 50px;"></el-image></template></el-table-column><el-table-column prop="gender" label="性别" align="center" min-width="20%"></el-table-column><el-table-column prop="job" label="职位" align="center" min-width="20%"></el-table-column></el-table>
</div>
</body><style>.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}
</style><script>new Vue({el: "#app",data() {return {tableData: []}},mounted() {axios.get('/listEmp').then(res => {if (res.data.code) {this.tableData = res.data.data;}});},methods: {}});
</script>
</html>

 发送请求,接收响应,具体结果如下:

以下为我对于此次案例的理解

首先用户在浏览器中发起对于前端页面的请求http://localhost:8080/emp.html ,在上述前端页面的代码可以知道,是一个基于Vue框架的前端页面,由Vue生命周期的知识可以知道写文章-CSDN创作中心

 当发送请求时,访问前端页面时,Vue对象也就会开始创建,其生命周期也就开始了。在上述前端代码中,当Vue对象完成挂载之后就会自动执行创建的  mounted()方法,在该方法中会发送一个异步请求,当请求成功后,就将获取到的数据展示到html页面中。

前端发送的请求会被后端对应的Controller类进行处理,该控制类的具体运行原理为:

对于目标的XML文件进行解析以及处理,然后将获取到的数据进行转换,具体转换规则,有具体的注解可以参考,最终转换的数据结果是一个集合,至此,数据已经完成了处理,最后返回将数据以Result类规定的格式进行返回,最终响应给前端页面。对于Result类有疑问的朋友可以参考:

写文章-CSDN创作中心

使用postman对于后端进行调试:运行结果如下:

发送请求为:http://localhost:8080/listEmp

{"code": 1,"msg": "success","data": [{"name": "金毛狮王","age": 55,"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/1.jpg","gender": "男","job": "讲师"},{"name": "白眉鹰王","age": 65,"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/2.jpg","gender": "男","job": "讲师"},{"name": "青翼蝠王","age": 45,"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/3.jpg","gender": "男","job": "班主任"},{"name": "紫衫龙王","age": 38,"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/web/4.jpg","gender": "女","job": "就业辅导"}]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19594.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos和redhat桥接模式下固定第二个ip地址为可查

这里我们以centos为例子&#xff0c;redhat与其同理 第一步&#xff1a;进入到镜像network-scripts/目录下 cd /etc/sysconfig/network-scripts 第二步&#xff1a; 输入ls查看自己启用的网卡名字并进行编辑&#xff0c;一般centos默认使用的网卡是idcfg-ens33 第三步&…

【Linux】分布式监控 Zabbix

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Zabbix 介绍zabbix 概述Zabbix 监控原理Zabbix 6.0 新特性Zabbix 6.0 功能组件 Zabbix 6.0 部署Zabbix 添加客户端主机Zabbix 自定义监控内容Zabbix 自动发现与自动…

【深度学习】日常笔记10

loss_fn nn.MSELoss(reductionnone)这行代码&#xff0c;在这个上下文中&#xff0c;loss_fn实际上是一个损失函数对象而不是返回的具体值。 使用nn.MSELoss(reductionnone)创建的loss_fn是一个均方误差损失函数对象&#xff0c;而不是计算后的结果。要计算具体的损失值&…

系统升级丨让VR全景制作简单再简单

最高端的VR全景 往往只需要最朴素的制作方式 酷雷曼3D VR数字化升级平台4.0版本 闪耀上线 全新的后台界面 丝滑的编辑工具 无需代码 不用建模 简单拖拉拽移 依然有手就行 轻松搭建VR元宇宙空间 1、界面升级&#xff0c;让VR创作更加可视 全新视觉设计 酷雷曼3D VR…

【前端】网页开发精讲与实战 CSS Day 2

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;前端 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对你有…

电路分析基础学习(上)第4章

李瀚荪版电分第二版 目录 求单口网络的VCR 常用等效规律 戴维南定理 诺顿定理 诺顿定理和戴维南定理应该如何选择&#xff0c;或者说对应不同的电路&#xff0c;选择哪一种等效电路更简单&#xff1f; 双口网络 分析含理想二极管的电路 -----------------------------…

Go自带库的使用说明

Go 中的时间操作 Golang中与时间有关的操作&#xff0c;主要涉及到 time 包&#xff0c;核心数据结构是 time.Time&#xff0c;如下&#xff1a; type Time struct {wall uint64ext int64loc *Location }1、获取时间相关函数 1.1 获取当前时间 // 返回当前时间&#xff0c…

APP外包开发硬件通讯协议

开发APP时会遇到需要与硬件设备通讯的业务场景&#xff0c;常见的硬件设备有健康设备(手环、血压计、血糖仪等)、智能家居设备(冰箱、灯、电视等)、工业设备等等&#xff0c;这些设备的通讯要求各不相同&#xff0c;因此通讯协议也不相同。今天和大家分享这方面的知识&#xff…

微服务拆分原则

库存供应链服务 交易和订单服务 用户服务 1. 业务之间耦合降低 相互调用较少 进行拆分 2.修改频率区分不同服务

为什么TCP是面向字节流协议

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 笔者在TCP 机制一文中有说到 TCP 是面向字节流的&#xff0c;这篇博客给大家介绍一下&#xff1a;为什么 TCP 是面向字节流协议的。 首先说一下 UDP &#xff0c;是一…

使用python将32位的bmp转成24位的

前言 一个临时需求&#xff0c;要将32位的bmp图像转成24位的 代码 使用opencv读取图片&#xff0c;然后重新存一下就可以。我看有些博主就这个内容还设置了收费&#xff0c;也不害臊。 import cv2if __name__ "__main__":img cv2.imread("IMG-0001-00001.…

目标跟踪基础:数据关联算法

本文来自公众号“AI大道理” —————— 数据关联是多目标跟踪任务中的关键步骤&#xff0c;其目的主要是为了进行帧与帧之间的多个目标的匹配。 1、数据关联 数据关联其实就是一个沿着时间轴&#xff0c;将来自同一个物体的不同时刻的信号串联起来的过程。 数据关联通常在…