前面已经说了我们重点关注的就是XXXcontroller类
进行请求接收
和响应
接收参数那些我们在请求部分讲过了
现在我们来处理响应部分
响应
设置响应数据
可以发现其实我们之前都是设置过的
比如那个Hello World
浏览器都接收到了且在浏览器上进行了输出
这里的是返回值作为这个响应的
这样的操作需要一个注解ResponseBody
这个注解既可以作用在方法上又可以作用在类上
比如这个就是作用在类上
这个类里所有方法的返回值都会作为响应值返回给浏览器
这里的@RestController=@Controller+@ResponseBody两个注解的合并
然后其实我们那个开发中那个规范就是规定了
每个请求路径对应获取的东西和内部操作
响应数据类型
可以发现每一个接口响应的路径很随意
需要统一一下
我们就新建一个类Result 包含code msg 和 data属性
然后把返回值全设置为Result对象
对应具体类
最后因为是对象所以会封装成json类型的数据
案例
解析emp.xml文件
返回对应格式(渲染完后的)
步骤
1.导入解析xml文件的依赖
dom4j
2.写工具类-主要运用我们dom4j的方法进行解析文件
并且进行封装到我们的集合里并返回
3.然后我们引入一个实体类进行员工数据的封装-xml文件里面介绍对应的员工对象
第一个和第二个参数分别的解析的xml文件
第二个是进行数据封装的类的class对象
4.引入xml文件到resource
5.引入我们的一些前端页面(放到resources里的static目录)
注意:SpringBoot的静态资源(html,css,js等静态资源)存放目录需要一定规范1.classpath:/static中2.classpath:/public(resources新建一个public目录放进去)3.classpath:/resources(resources新建一个resources目录放进去(没错就是套的同名))
对于maven我们的classpath路径就是resources
6.编写controller程序
package com.itheima.controller;
import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.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();
System.out.println(file);
List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//2. 对数据进行转换处理 - gender, job
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);
}
}
效果
postman获取数据
结合前端页面
注意我们不需要加static路径,应为它本来就是存放静态页面的
而且我们的前端代码其实可以看到他原本是没有写数据的,就是根据后端获取的数据和js然后往前端页面上一个一个填这样
实现了动态数据这种效果
这行代码就是重点
就是它通过哪个方法(请求路径)获取数据
我们写的访问xml数据是listEmp所以这里也需要是listEmp