SpringMVC常见的八种接参方式

一.key-value形式的简单参数

        1.前端:key1=v1&key2=v2

        2.后端

               1.Servlet原生方式

                        2.request.getParameter("key")

// 使用原生请求对象接受
    @RequestMapping("test1")
    public String test1(HttpServletRequest request){
        String username = request.getParameter("username");
        System.out.println(username);
        return "success";
    }

                2.SpringBoot方式

                        1.controller的形参和请求参数名保持一致即可

                        2.@RequestParam:不一致手动映射

// 使用SpringMVC接受普通参数
    @RequestMapping("test2")
    public String test2(@RequestParam("username1") String username,
                        @RequestParam("password2") String password,
                        @RequestParam("age3") Integer age){

        System.out.println(username+"---"+password+"---"+age);
        return "success";
    }

 二.实体参数

        1.前端:key1=v1&key2=v2

        2.后端

               1.自定义Bean,bean的属性名与参数名保持一致

                2.public class Bean{ private String key1; private String key2; }

// 使用SpringMVC接受对象
    @RequestMapping("test3")
    public String test3(User user){
        System.out.println(user);
        return "success";
    }

三.复杂实体对象

        1.前端:key1=v1&key2=v2&key3.key4=v3

        2.后端

                1.请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套实体类属性参数

                        1.public class Bean{ private String key1; private String key2; private Bean2 key3; }                         2.public class Bean2{ private String key4; }

// 使用SpringMVC接受对象嵌套
    @RequestMapping("test4")
    public String test4(User user){
        System.out.println(user);
        return "success";
    }

四.数组集合参数

        1.前端

                1.key=v1&key=v2

                2.key=v1,v2

        2.后端

                1.数组

                        1.请求参数名与形参数组名称相同且请求参数为多个,定义数组类型形参即可接收参数

                        2.String[] key

// 使用SpringMVC接受数组
    @RequestMapping("test5")
    public String test5(String[] hobby){
        System.out.println(Arrays.toString(hobby));
        return "success";
    }

                2.list

                        1.@RequestParam

                        2.@RequestParam("hobby") List<String> hobby

// 使用SpringMVC接受集合
    @RequestMapping("test6")
    public String test6(@RequestParam List<String> hobby){
        System.out.println(hobby);
        return "success";
    }

五.日期参数

        1.前端:key=2022-12-12 10:05:45

        2.后端:@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

// 使用SpringMVC接受集合
    @RequestMapping("test7")
    public String test7(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate birthday){
        System.out.println(birthday);
        return "success";
    }

六.json参数

        1.前端

                1.{ “name”:"zhangsan", "age":20 }

                2.Content-Type:application/json

                3.POST

        2.后端

                1.@RequestBody

                2.public class User{ private Strign name; private Integer age; }

// 使用SpringMVC接受json对象--对象
    @RequestMapping( "test9")
    public String test9(@RequestBody User user){
        System.out.println(user);
        return "success";
    }

七.路径参数

        1.前端

                1.http://localhost:8080/user/1

        2.后端

                1.使用{…}来标识该路径参数,需要使用@PathVariable获取路径参数

                2.@GetMapping("/user/{id}") @PathVariable("id") Long id;

// 使用SpringMVC接受路径参数
@RequestMapping( "test10/{id}/{name}")
public String test10(@PathVariable("id") Integer number,@PathVariable("name") String name){
    System.out.println(number);
    System.out.println(name);
    return "success";
}

八.文件参数

        1.前端

                1. POST

                2.Content-Type:multipart/form-data;

                3.boundary=-----12121212

                4.file

        2.后端

                1.MultipartFile

                2.@RequestRaram或者@RequestPart对应参数名

@PostMapping("/test12")
public String test12(@RequestParam("myFile") MultipartFile myFile) {
    return myFile.getOriginalFilename() + "=" + myFile.getSize();
}

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值