SpringMV常用注解之@requestbody和@requestparam


基本介紹

  • @requestparam

屬性介紹

  1. required:表示是否必須,默認為 true,必須
  2. defaultValue:可設置請求參數的默認值
  3. value:為接收url的參數名(相當於key值)
  • @requestbody

屬性介紹

  1. required:表示是否必須,默認為 true,必須

使用方式

@requestparam

   @RequestParam用來處理 Content-Type:application/x-www-form-urlencoded編碼的內容,Content-Type默認為該屬性。@RequestParam也可用於其它類型的請求,例如:POST、DELETE等請求。但是這樣不支持批量插入數據,如果改用json字符串來傳值的話,類型設置為 application/json,點擊發送的話,會報錯,后台接收不到值,為null。這時候,注解@RequestBody就派上用場了。

注意:方法中參數類型為實體時不能夠使用@RequestParam,否則會報400的錯誤。當然如果把@RequestParam(required = false)加到試題類型參數前面,就不會報錯,但是實體類也不會被賦值。

    @GetMapping("test1")
    @ResponseBody
    public String test1(String userName, Integer age) {
        return "姓名:" + userName + ",年齡:" + age;
    }

    @GetMapping("test2")
    @ResponseBody
    public String test2(UserEntity userEntity, String userName, Integer age) {
        return "用戶:" + JSONUtil.toJsonStr(userEntity) + "姓名:" + userName + ",年齡:" + age;
    }

    @GetMapping("test3")
    @ResponseBody
    public String test3(UserEntity userEntity, @RequestParam(name = "name", required = false) String userName,Integer age) {
        return "用戶:" + JSONUtil.toJsonStr(userEntity) + "姓名:" + userName + ",年齡:" + age;
    }

@requestbody

  注解@RequestBody接收的參數是來自requestBody中,即請求體。一般用於處理非 Content-Type: application/x-www-form-urlencoded編碼格式的數據,比如:application/json、application/xml等類型的數據。就application/json類型的數據而言,使用注解@RequestBody可以將body里面所有的json數據傳到后端,后端再進行解析

  GET請求中,因為沒有HttpEntity,所以@RequestBody並不適用。

  POST請求中,通過HttpEntity傳遞的參數,必須要在請求頭中聲明數據的類型Content-Type,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數據,然后綁定到相應的bean上。

注意:前端使用$.ajax的話,一定要指定 contentType: "application/json;charset=utf-8;",默認為 application/x-www-form-urlencoded

     @PostMapping("test4") @ResponseBody public String test4(@RequestBody List<UserEntity> lists) { return "用戶:" + JSONUtil.toJsonStr(lists); } @PostMapping("test5") @ResponseBody public String test5(@RequestBody List<Map<String, Object>> maps) { return "用戶:" + JSONUtil.toJsonStr(maps); }

通過postman正確調用:

 

 

 如果使用form表單提交,就會報錯:

  @RequestBody和@RequestParam的請求方式get和post關系


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM