😀前言
本篇博文是关于SpringBoot 在响应客户端请求时支持的复杂参数和自定义对象参数,希望您能够喜欢😊
🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- SpringBoot接收参数相关注解应用
- 复杂参数
- 基本介绍
- 复杂参数应用实例
- 代码实现
- 测试:
- 自定义对象参数-自动封装
- 基本介绍
- 自定义对象参数-应用实例
- 代码实现
- 测试
SpringBoot接收参数相关注解应用
复杂参数
基本介绍
- 在开发中,SpringBoot 在响应客户端请求时,也支持复杂参数。
- Map、Model、Errors/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession。
- Map、Model 数据会被放在request 域, 底层request.setAttribute()。
- RedirectAttributes 重定向携带数据。
复杂参数应用实例
说明: 演示复杂参数的使用,重点: Map、Model、ServletResponse
代码实现
修改com/nlc/web/controller/RequestController.java
@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletRequest request) {request.setAttribute("user", "顺顺~");//向request域中添加的数据request.getSession().setAttribute("website", "http://www.baidu.com"); //向session中添加数据return "forward:/ok"; //请求转发到 /ok}@GetMapping("/ok")@ResponseBodypublic String ok(HttpServletRequest request,@SessionAttribute(value = "website", required = false) String website,@RequestAttribute(value = "user", required = false) String username) {//获取到request域中的数据System.out.println("username-" + username);System.out.println("通过servlet api 获取 username-" + request.getAttribute("user"));System.out.println("website-" + website);System.out.println("通过servlet api 获取 website-" + request.getSession().getAttribute("website"));return "success";}//响应一个注册请求@GetMapping("/register")public String register(Map<String,Object> map,Model model,HttpServletResponse response) {//如果一个注册请求,会将注册数据封装到map或者model//map中的数据和model的数据,会被放入到request域中map.put("user","nlc");map.put("job","java架构师");model.addAttribute("sal", 80000);//一会我们再测试response使用//我们演示创建cookie,并通过response 添加到浏览器/客户端Cookie cookie = new Cookie("email", "www@my.com");response.addCookie(cookie);//请求转发return "forward:/registerOk";}@ResponseBody@GetMapping("/registerOk")public String registerOk(HttpServletRequest request) {System.out.println("user-" + request.getAttribute("user"));System.out.println("job-" + request.getAttribute("job"));System.out.println("sal-" + request.getAttribute("sal"));return "success";}
}
测试:
浏览器http://localhost:8080/register
自定义对象参数-自动封装
基本介绍
- 在开发中,SpringBoot 在响应客户端请求时,也支持自定义对象参数
- 完成自动类型转换与格式化
- 支持级联封装
自定义对象参数-应用实例
需求说明: 演示自定义对象参数使用,完成自动封装,类型转换
代码实现
- 创建public/save.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>添加妖怪</title>
</head>
<body>
<h1>添加妖怪-坐骑[测试封装POJO;]</h1>
<form action="/savemonster" method="post">编号: <input name="id" value="100"><br/>姓名: <input name="name" value="牛魔王"/> <br/>年龄: <input name="age" value="500"/> <br/>婚否: <input name="isMarried" value="true"/> <br/>生日: <input name="birth" value="2000/11/11"/> <br/>坐骑:<input name="car.name" value="奔驰"/><br/>价格:<input name="car.price" value="99999.9"/><input type="submit" value="保存"/>
</form>
</body>
</html>
- 创建com\nlc\web\bean\Car.java
@ToString
@Data
public class Car {private String name;private Double price;
}
- 创建com\nlc\web\bean\Monster.java
@Data
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;
}
- 修改com/nlc/web/controller/ParameterController.java 增加处理添加请求
@PostMapping("/savemonster")public String saveMonster(Monster monster) {System.out.println("monster-" + monster);return "success";}
测试
完成测试, 浏览器http://localhost:8080/save.html
在开发过程中日期格式不用太在意,我们只要保证用户界面和DB是需要的格式就够了。
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞