spring-mvc-boot-4 获取控制器参数【@RequestParam+@RequestBody+@PathVariable+@DateTimeFormat+@NumberFormat】

本文详细介绍了在Spring MVC Boot中如何获取不同类型的参数,包括无注解获取、@RequestParam、@RequestBody、@PathVariable以及格式化参数如日期和数字。通过实例解析了各种方式的使用场景和注意事项。

一、注释

@RequestParam

@RequestBody

@PathVariable

@DateTimeFormat

@NumberFormat

二、获取参数

1、在无注解下获取参数

在无注解的情况下,springMVC也可以自动获取参数,其实很多人不注意这个细节。慢慢的就会糊里糊涂的用。其实,在无注解的情况下,只要参数名称和HTTP请求中的完全一致,就可以自动获取。另外,这个参数是允许为空的

例子就不写了,只要名一样就行。

    注 1.在无注解下获取参数,要求参数名称和HTTP请求参数名称一致.会自动获取。

    注 2.在无注解下获取数组参数,用逗号分割,后台接收。

http://127.0.0.1:8080/app?intAy= 1,2,3&longAy=4,5,6&strAy=str,str2,str3
public ModelAndView func1(
            int[]  intAy,
            long[]  longAy,
            string []  stringAy,
                        ){
        
       ......

       return mv;
    }

2、@RequestParam获取参数

这个使用也很简单,类似自动获取。这里相当于使用@requestParam进行了人工标记。

 注:使用@RequestParam 获取参数[在方法参数之前添加注释] 

public ModelAndView func1(
            @RequestParam("int_v") Integer intv,
            @RequestParam("long_v") Long longv,
            @RequestParam("string_v") String stringv,
                        ){
       String string_G =stringv;
       Integer int_G =intv;
       Long    long_v=longv;
        
       ......

       return mv;
    }

3、获取json参数

有个前提:页面上送时,需要设置json格式。

@RequestBody [注释参数] 意味着它将接收前端提交的 JSON 请求体,而在 JSON 请求体与 User 类之间的属性名称是保持一致的,这样 Spring MVC 就会通过这层映射关系将 JSON 请求体转换为 User 对象。

public Map<String,Object> vaildUser( @RequestBody User user)

注:@RequestBody使用:

 (1)@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
 (2)通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean(user[name,pwd])上,当然,也可以将其分别绑定到对应的字符串上。

login(@requestBody String userName,@requestBody String pwd){}

4、通过URL传递参数


     注 1.@GetMapping 指定一个 URL,然后用 {...}来标明参数的位置和名称。 
     注 2.@PathVariable 配置的字符串为 id,它对应URL 的参数声明。这样 Spring 就知道如何从 URL 中获取参数。于是请求 http://localhost:8080/user/1。
     注:@PathVariable使用: 将 URL 中占位符参数绑定到控制器处理方法的入参中  

     @RequestMapping("/delete/{id}")   
     delete(@PathVariable("id") Long id)  

5、获取格式化参数  

   @DateTimeFormat(iso=DateTimeFormat.ISO.DATE) Date date,  后台的实体类可以把它转换成Date类型  

   @NumberFormat(pattern = "#,###.##") Double number       后台的实体类可以把它转换成Double类型

    在 Spring Boot 中,日期参数的格式化也可以不使用@DateTimeFormat ,而 只在配置文件application.properties 中加入如下配置项即可 :

 spring.mvc.date-format=yyyy-MM-dd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良之才-小良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值