学习记录使用~
请求与响应
请求映射路径
- 路径冲突问题,不同的人起的路径名字可能一致导致,找不到路径会出现错误。
- 解决方式:通过RequestMapping统一设置请求路径前缀。
请求方式
Get请求
给要访问的方法设置参数
postMan中给参数赋值
IDEA端也接收到参数
Post请求
先在PostMan端设置参数,点击send,若请求成功则在IDEA端显示出数据
解决post请求中文乱码问题——在ServletContainersInitConfig类中添加下面方法
请求参数
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/save")
@ResponseBody
public String save(String name,int age){
System.out.println("user save....param name==>"+name);
System.out.println("user save....param age==>"+age);
return "{'module':'user save'}";
}
//普通参数传参
//@RequestParam("name")把请求中的参数给到userName
@RequestMapping("/commonParamDifferentName")
@ResponseBody
public String commonParamDifferentName(@RequestParam("name") String userName, int age){
System.out.println("user save....param userName==>"+userName);
System.out.println("user save....param age==>"+age);
return "{'module':'user save'}";
}
//引用类型类型
@RequestMapping("/pojoParam")
@ResponseBody
public String pojoParam(User user){
System.out.println("pojo参数传递 User==>"+user);
return "{'module':'pojo Param'}";
}
//引用类型中有引用类型
@RequestMapping("/pojoContainParam")
@ResponseBody
public String pojoContainParam(User user){
System.out.println("pojo嵌套pojo参数传递 User==>"+user);
return "{'module':'pojo Contain Param'}";
}
//数组参数
@RequestMapping("/arrayParam")
@ResponseBody
public String arrayParam(String[] likes){
System.out.println("数组参数传递 likes==>"+ Arrays.toString(likes));
return "{'module':'array Param'}";
}
//集合参数
@RequestMapping("/listParam")
@ResponseBody
public String listParam(@RequestParam List<String> likes){
System.out.println("集合参数传递 likes==>"+likes);
return "{'module':'List Param'}";
}
//集合参数:jason
@RequestMapping("/listParamJson")
@ResponseBody
public String listParamJson(@RequestBody List<String> likes){
System.out.println("集合参数传递 likesJASON==>"+likes);
return "{'module':'List Param Json'}";
}
//User---JSON
@RequestMapping("/pojoContainParamJSON")
@ResponseBody
public String pojoContainParamJSON(@RequestBody User user){
System.out.println("pojo嵌套pojo参数传递 User==>"+user);
return "{'module':'pojoJSON Contain Param'}";
}
//集合参数:userjason
@RequestMapping("/listParamUserJson")
@ResponseBody
public String listParamUserJson(@RequestBody List<User> users){
System.out.println("集合User参数传递 listUserJASON==>"+users);
return "{'module':'ListUser Param Json'}";
}
}
日期类型参数传递
//日期参数
// @DateTimeFormat指定日期格式
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date date1,
@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss") Date date2){
System.out.println("参数传递 date==>"+date);
System.out.println("参数传递 date1(yyyy-MM-dd)==>"+date1);
System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss)==>"+date2);
return "{'module':'Date Param'}";
}
PostMan中输入的网址如下:
IDEA中接收参数成功的样子如下:
类型转换接口——Converter
响应
//响应页面或跳转页面
@RequestMapping("/toJumpPage")
@ResponseBody//设置当前控制器返回值作为响应体-----HttpMessageConverter接口
public String toJumPage(){
System.out.println("跳转页面");
return "page.jsp";
}
//响应文本数据
@RequestMapping("/toText")
@ResponseBody
public String toText(){
System.out.println("返回纯文本数据");
return "response text";
}
//响应POJO对象
@RequestMapping("/toJsonPOJO")
@ResponseBody
public User toJsonPOJO(){
System.out.println("返回JSON对象数据");
User user=new User();
user.setName("itcast");
user.setAge(20);
return user;
}
//响应POJO集合对象
@RequestMapping("/toJsonList")
@ResponseBody
public List<User> toJsonList(){
System.out.println("返回JSON集合数据");
User user=new User();
user.setName("小明同学");
user.setAge(20);
User user2=new User();
user2.setName("小美");
user2.setAge(25);
List<User> userList=new ArrayList<>();
userList.add(user);
userList.add(user2);
return userList;
}
ResponseBody将当前控制器返回值作为响应体,将JSON类型的返回值传出去,是谁将其他类型变成JSON的呢?是HttpMessageConverter这个类将其他类型转换成JSON类型 。
注意:ResponseBody在请求中的作用的设置当前控制器方法响应内容为当前返回值,无需解析