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

x33g5p2x  于2022-02-07 转载在 Java  
字(1.6k)|赞(0)|评价(0)|浏览(365)

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

1. HttpServletRequest request接收参数

@RequestMapping("/test1")
    public String test1(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传参

2. 接收url地址中的参数

@RequestMapping(value = "/test2")
   public String test2(@RequestParam("name") String name,
                          @RequestParam("age") Integer age
                       ) {
       
       return name;
   }

这种格式接收的是 /test2?name=zhangsan&age=15 格式的传参

@RequestParam 如果不写,就要求跟url地址中携带的参数名完全一致

这种形式传参与请求方式无关,Get,Post,Put 等皆可

3. 直接通过对象接收

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

这种方式要求请求中的参数名与实体中的属性名一致即可自动映射到实体属性中;

支持url拼接的多个params 传参

支持post请求 的form类型传参(form-data,x-www-form-urlencoded),不支持JSON 传参

4. @RequestBody 接收body中的JSON字符串参数

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

@RequestBody 是接收请求体中的JSON 字符串参数直接映射实体对象,所以body类型必须是JSON字符串;而且实体类中的属性名称必须与JOSN串中的参数key名称完全一致,不同命参数无法正确接收;

此种传参方式,推荐使用 Post请求

5. @PathVariable RestFul 风格传参

@RequestMapping(value = {"/test5/{name}/{age}"})
    public String method07(@PathVariable("name") String name,
                           @PathVariable(value = "age", required = false) Integer age
                           ) {
        User user = new User();
        user.setName(name);
        user.setAge(age);
        return JSON.toJSONString(user);
    }

/test5?/zhangsan/25

通过 @PathVariable 实现 RestFul 风格传参,直接将参数拼接到url地址中,支持Get,Post,Put,Delete 等多种请求

required属性默认为true,不传递参数会报错;

如果出现某个参数可以不传递的情况,可以通过设置required属性为false

相关文章