@RequestParam和@RequestBody和@PathVariable用法小結


@RequestParam

使用@RequestParam接收前段參數比較方便,前端傳參的URL:

url = “${ctx}/main/mm/am/edit?Id=${Id}&name=${name}”

后端使用集合來接受參數,靈活性較好,如果url中沒有對參數賦key值,后端在接收時,會根據參數值的類型附,賦一個初始key(String、long ……)

@RequestMapping("/edit")
    public String edit(Model model, @RequestParam Map<String, Object> paramMap ) {
        long id = Long.parseLong(paramMap.get("id").toString());
        String name = paramMap.get("name").toString;
        return page("edit");
    }

@PathVariable

使用@PathVariable接收參數,參數值需要在url進行占位,前端傳參的URL:

前台實例: url = “${ctx}/main/mm/am/edit/${Id}/${name}”

服務端接受:

	@RequestMapping("/edit/{id}/{name}")
    public String edit(Model model, @PathVariable long id,@PathVariable String name) {
        
        return page("edit");
    }

前端傳參的URL於后端@RequestMapping的URL必須相同且參數位置一一對應,否則前端會找不到后端地址


一、@RequestParam

先介紹一下@RequestParam的使用場景:

注解@RequestParam接收的參數是來自requestHeader中,即請求頭。通常用於GET請求,比如常見的url:http://localhost:8081/spring-boot-study/novel/findByAuthorAndType?author=唐家三少&type=已完結,其在Controller 層的寫法如下圖所示:
在這里插入圖片描述
@RequestParam有三個配置參數:

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

@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內容,Content-Type默認為該屬性。

@RequestParam也可用於其它類型的請求,例如:POST、DELETE等請求。比如向表中插入單條數據,但是這樣不支持批量插入數據啊,如果改用 json 字符串來傳值的話,類型設置為 application/json,點擊發送的話,會報錯,后台接收不到值,為 null

這時候,注解@RequestBody就派上用場了。

二、@RequestBody

先介紹一下@RequestBody的使用場景:

注解@RequestBody接收的參數是來自requestBody中,即請求體。一般用於處理非 Content-Type: application/x-www-form-urlencoded編碼格式的數據,比如:application/json、application/xml等類型的數據。

就application/json類型的數據而言,使用注解@RequestBody可以將body里面所有的json數據傳到后端,后端再進行解析。

舉個批量插入數據的例子,Controller層的寫法如下圖所示:

在這里插入圖片描述
注意:前端使用$.ajax的話,一定要指定 contentType: "application/json;charset=utf-8;",默認為 application/x-www-form-urlencoded。


免責聲明!

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



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