作业二 设备信息展示
要求:将下面的代码按照springboot分层解耦的机制进行改写,实现设备列表的前端展示。
@RestController
public class DeviceController {
@RequestMapping("/listDev")
public Result list(){
//1. 加载并解析emp.xml
String file = this.getClass().getClassLoader().getResource("devices.xml").getFile();
System.out.println(file);
List<Device> devList = XmlParserUtils.parse(file, Device.class);
System.out.println(devList);
//2. 对数据进行转换处理 - DevState
devList.stream().forEach(dev -> {
//处理 DevState 1: 开, 0: 关
String state = dev.getDevState();
if("1".equals(state)){
dev.setDevState("开");
}else if("0".equals(state)){
dev.setDevState("关");
}
});
//3. 响应数据
return Result.success(devList);
}
}
1.将代码分成三层架构,Controller,Service,Dao层,将代码分层解耦。
分别建立controller,service,dao的包,在包下建立class文件
2.Controller层代码:
@RestController
public class DeviceController {
private DeviceService deviceService = new DeviceService();
@RequestMapping("/list.dev")
public Result list(){
List<Device>devList = deviceService.ListDevice();
//3. 响应数据
return Result.success(devList);
}
}
@Autowired调用容器中DevService的实例化对象,函数调用DevService的listService()函数。
3.Service层代码:
编写实例DevService,调用Dao层的DevDao实例化对象,函数调用DevDao的listDao()函数,将取到的数据设置状态开关,再返回类到Controller层。
public class DeviceService {
private DeviceDao devDao = new DeviceDao();
public List<Device> ListDevice(){
List<Device>devList =devDao.ListDao();
//2. 对数据进行转换处理 - DevState
devList.stream().forEach(dev -> {
//处理 DevState 1: 开, 0: 关
String state = dev.getDevState();
if("1".equals(state)){
dev.setDevState("开");
}else if("0".equals(state)){
dev.setDevState("关");
}
});
return devList;
}
}
4.Dao层代码:
编写listDao函数,读取xml文件内容,返回到Service层调用。
public class DeviceDao {
public List<Device> ListDao(){
//1. 加载并解析devices.xml
String file = Objects.requireNonNull(this.getClass().getClassLoader().getResource("devices.xml")).getFile();
System.out.println(file);
List<Device> devList = XmlParserUtils.parse(file, Device.class);
System.out.println(devList);
return devList;
}
}
5、Device实体和Result
Device
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Device {
String devName;
String devID;
String image;
String userName;
String devState;
}
Result
public class Result {
private Integer code ;//1 成功 , 0 失败
private String msg; //提示信息
private Object data; //数据 date
public Result() {
}
public Result(Integer code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public static Result success(Object data){
return new Result(1, "success", data);
}
public static Result success(){
return new Result(1, "success", null);
}
public static Result error(String msg){
return new Result(0, msg, null);
}
}
6.插入xml文件到resource包下。
dev.html,devices.html文件以及img包中的图片分享在网盘中
链接:https://pan.baidu.com/s/1oqTeAWghU9_16MqNe2KbWg?pwd=1234
提取码:1234
7.运行IDEA,打开浏览器输入http://localhost:8888/dev.html 查看设备网页信息。
(1)我的原端口号已被占用,这里将端口号手动进行了修改