后端接收Request请求参数的几种方式

原文地址:
https://blog.csdn.net/ShiuHB/article/details/109674343

1.直接在controller方法的形参中接收参数

@RequestMapping("/addUser1")
public String addUser1(String username,String password) {
    System.out.println("username is:"+username);
    System.out.println("password is:"+password);
    return "demo/index";
}

这种方式前端传参需要将值写到url中,适用于get方式提交,不适用于post方式提交

2.@RequestParam注释

与第一种方式类似,加在形参前,可以对前端的参数做映射
三个参数:

  • value:对应url中的参数名
  • required:是否是必须的,默认为false
  • defaultVaule:默认值

3.@PathVariable注释

与第二种方式类似,加在形参前,可以直接到url中取值
不同点:mapping中要有对应的占位符(REST风格)

@RequestMapping("/addUser1/{name}/{pwd}")
public String addUser1(@PathVariable("name") String username, @PathVariable("pwd") String password) {
    System.out.println("username is:"+username);
    System.out.println("password is:"+password);
    return "demo/index";
}
  • value:对应url中的参数名
  • required:是否是必须的,默认为true
  • 没有默认值

4.@RequestBody注释

用于接收body中的json串

@RequestMapping(value = "/method03")
    public String method03(@RequestBody User user) {
        return JSON.toJSONString(user);
    }

注意实体类中的属性名称必须与JOSN串中的参数key名称完全一致,不同命参数无法正确接收;
使用此种方式推荐使用Post请求携带body参数,get请求虽然也可以携带body参数并请求成功但并不推荐这样操作

5.HttpServletRequest request接收参数

 @RequestMapping("/method06")
    public String method06(HttpServletRequest request) {
        User user = new User();
        user.setName(request.getParameter("name"));
        user.setAge(Integer.valueOf(request.getParameter("age")));
        user.setMoney(Double.parseDouble(request.getParameter("money")));
        return JSON.toJSONString(user);
    }

传统的接收参数方式,可以接收url params 传参,支持post from类型传参,不支持JSON传参
注意如果请求中未传递指定名称的参数,取参时会报错

posted @ 2021-06-15 17:55  爱饮凉水  阅读(3970)  评论(0编辑  收藏  举报