SpringBoot 接收客户端提交数据/参数会使用到相关注解
创始人
2024-03-01 04:28:38
0

目录

 

一.基本介绍

二.接收参数相关注解应用实例

1.需求:

2.应用实例演示

2.1演示@PathVariable 使用

2.2.演示@RequestHeader 使用

2.3演示@RequestParam 使用

2.4演示@CookieValue 使用

2.5演示@RequestBody 使用

2.6演示@RequestAttribute,SessionAttribute 使用

三.复杂参数

1.基本介绍

2.复杂参数应用实例

2.1说明 :

2.2代码演示

四.自定义对象参数-自动封装

1.基本介绍

2.自定义对象参数-应用实例

2.1需求说明 :

2.2代码实现

 

一.基本介绍

1. SpringBoot 接收客户端提交数据/参数会使用到相关注解 2. 详 解 @PathVariable 、 @RequestHeader 、 @ModelAttribute 、 @RequestParam 、 @MatrixVariable、@CookieValue、@RequestBody

二.接收参数相关注解应用实例

1.需求:

演示各种方式提交数据/参数给服务器,服务器如何使用注解接收

2.应用实例演示


index


hello, 海绵hong

基本注解:
@PathVariable-路径变量 monster/200/jack

@RequestHeader-获取Http请求头

@RequestParam-获取请求参数

@CookieValue-获取cookie值

@RequestAttribute-获取request域属性-

测试@RequestBody获取数据: 获取POST请求体

姓名:
年龄:

需求: 演示各种方式提交数据/参数给服务器,服务器如何使用注解接收

2.1演示@PathVariable 使用

@RestController
public class ParameterController {/*** /monster/{id}/{name} 解读* 1. /monster/{id}/{name} 构成完整请求路径* 2. {id} {name} 就是占位变量* 3. @PathVariable("name"): 这里name 和{name} 命名保持一致* 4. String name_ 这里自定义,故意这样写下* 5. @PathVariable Map map 把所有传递的值传入map* 6. 可以看下@PathVariable源码*/@GetMapping("/monster/{id}/{name}")public String pathVariable(@PathVariable("id") Integer id,@PathVariable("name") String name,@PathVariable Map map) {System.out.println("id-" + id);System.out.println("name-" + name);System.out.println("map-" + map);return "success";}

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

2.2.演示@RequestHeader 使用

 /*** @RequestHeader("Host") 获取http请求头的 host信息* @RequestHeader Map header: 获取到http请求的所有信息*@RequestHeader("host") String host,将请求头中的变量值host映射到控制器参数host中*/@GetMapping("/requestHeader")public String requestHeader(@RequestHeader("host") String host,@RequestHeader Map header,@RequestHeader("accept") String accept) {System.out.println("host-" + host);System.out.println("header-" + header);System.out.println("accept-" + accept);return "success";}

@RequestHeader 是获取请求头中的数据,通过指定参数 value 的值来获取请求头中指定的参数值

2.3演示@RequestParam 使用

/*** 解读* 如果我们希望将所有的请求参数的值都获取到,可以通过** @param username* @param fruits* @param paras* @return* @RequestParam Map paras 获取*/@GetMapping("/hi")public String hi(@RequestParam(value = "name") String username,@RequestParam("fruit") List fruits,@RequestParam Map paras) {System.out.println("username-" + username);System.out.println("fruit-" + fruits);System.out.println("paras-" + paras);return "success";}

将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)value:参数名required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

2.4演示@CookieValue 使用

 /*** 因为我的浏览器目前没有cookie,我们可以自己设置cookie[技巧还是非常有用]* 如果要测试,可以先写一个方法,在浏览器创建对应的cookie* 说明 1. value = "cookie_key" 表示接收名字为 cookie_key的cookie* 2. 如果浏览器携带来对应的cookie , 那么 后面的参数是String ,则接收到的是对应对value* 3. 后面的参数是Cookie ,则接收到的是封装好的对应的cookie*/@GetMapping("/cookie")public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,HttpServletRequest request,@CookieValue(value = "username", required = false) Cookie cookie) {System.out.println("cookie_value-" + cookie_value);if (cookie != null) {System.out.println("username-" + cookie.getName() + "-" + cookie.getValue());}System.out.println("-------------------------");Cookie[] cookies = request.getCookies();for (Cookie cookie1 : cookies) {System.out.println(cookie1.getName() + "=>" + cookie1.getValue());}return "success";}

@CookieValue的作用

  用来获取Cookie中的值

@CookieValue参数

  1、value:参数名称

  2、required:是否必须,获取不到则为空

  3、defaultValue:默认值

2.5演示@RequestBody 使用

*** @RequestBody 是整体取出Post请求内容*/@PostMapping("/save")public String postMethod(@RequestBody String content) {System.out.println("content-" + content);return "success";}

        @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

2.6演示@RequestAttribute,SessionAttribute 使用

@GetMapping("/login")public String login(HttpServletRequest request) {request.setAttribute("user", "hong~");//向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";}

获取HTTP的请求(request)对象属性值,用来传递给控制器的参数。

三.复杂参数

1.基本介绍

1. 在开发中,SpringBoot 在响应客户端请求时,也支持复杂参数 2. Map、Model、Errors/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、 UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession 3. Map、Model 数据会被放在 request 域, 底层 request.setAttribute() 4. RedirectAttributes 重定向携带数据

2.复杂参数应用实例

2.1说明 :

演示复杂参数的使用,重点: Map、Model、ServletResponse

2.2代码演示

//响应一个注册请求@GetMapping("/register")public String register(Map map,Model model,HttpServletResponse response) {//如果一个注册请求,会将注册数据封装到map或者model//map中的数据和model的数据,会被放入到request域中map.put("user","hspedu");map.put("job","java架构师");model.addAttribute("sal", 80000);//一会我们再测试response使用//我们演示创建cookie,并通过response 添加到浏览器/客户端Cookie cookie = new Cookie("email", "hspedu@sohu.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";}

四.自定义对象参数-自动封装

1.基本介绍

1. 在开发中,SpringBoot 在响应客户端请求时,也支持自定义对象参数 2. 完成自动类型转换与格式化 3. 支持级联封装

2.自定义对象参数-应用实例

2.1需求说明 :

演示自定义对象参数使用,完成自动封装,类型转换

2.2代码实现

save.html


添加妖怪


添加妖怪-坐骑[测试封装POJO;]

编号:
姓名:
年龄:
婚否:
生日:
坐骑:

Car.java 

@ToString
@Data
public class Car {private String name;private Double price;
}

 Monster.java 

@ToString
@Data
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;
}
ParameterController.java 增加处理添加请求
@PostMapping("/savemonster")
public String saveMonster(Monster monster){System.out.println("monster= " + monster);return "success";
}

d2b3b58520114dfb8fa8138e22366d43.png 

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...