目录
请求(HttpServletRequest):获取请求数据
响应(HttpServletResponse):设置响应数据
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(维护方便 体验一般)
CS架构:Client/Server,客户端/服务器架构模式。(开发、维护麻烦 体验不错)
1.请求
Postman
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
作用:常用于进行接口测试
简单参数
SpringBoot中接收简单参数:参数名与形参变量名相同,定义形参即可接收参数
请求参数名与方法形参变量名相同 会自动进行类型转换
如果方法形参名称与请求参数名称不匹配,可以使用 @RequestParam 完成映射。
@RequestMapping("/simpleParam)
public String simpleParam(@RequestParam(name = "name") String username , Integer age){
System.out.println(username + " : " + age);
return "OK"
@RequestParam中的required属性默认为true,代表该请求参数必须传递,如果不传递将报错。 如果该参数是可选的,可以将required属性设置为false。
required = false代表请求参数可传递可不传递(结果输出为null:20) =true代表请求参数必须传递,忽略
public String simpleParam(@RequestParam(name = "name",required=false) String username , Integer age){
实体参数
(将所有参数封装到实体类当中)请求参数名与实体类属性名保持一致
简单实体对象:请求参数名与形参对象属性名相同,定义POJO接收即可
生成各种方法
复杂实体对象:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属
性参数。
数组集合参数
数组参数:请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数
可以直接使用数组封装
集合参数
请求参数名与形参集合名称相同且请求参数为多个,@RequestParam 绑定参数关系
日期参数
日期参数:使用 @DateTimeFormat 注解完成日期参数格式转换
JSON参数
JSON参数:JSON数据键名与形参对象属性名相同,定义POJO类型形参即可接收参数,需要使用 @RequestBody 标识
路径参数
路径参数:通过请求URL直接传递参数,使用{…}来标识该路径参数,需要使用 @PathVariable 获取路径参数
2.响应
@ResponseBody
类型:方法注解、类注解
位置:Controller类上/方法上
作用:将方法返回值直接响应,若返回值类型是 实体对象/集合 ,转JSON格式响应
说明:@RestController=@Controller+@ResponseBody
统一响应结果 Result(code、msg、data)
统一响应
案例
工具类XMLParserUtils存放在utils下,实体类Emp存放在pojo包下(封装谁的数据) emp.xml放在resources目录下(定义了员工对象)
服务端路径 :
1.类加载器,声明file变量,
2.XMLParserUtils.parse(加载的对应文件,往哪个对象封装)
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);
}
}