Springboot的Controller中常用注解


https://blog.csdn.net/weixin_43184769/article/details/83383341

@Controller和@RestController和@ResponseBody

@Controller

@Controller注解標注類的方法,return時會被視圖處理器識別成靜態文件的路徑。默認為templates文件夾下。如return "test/hello"表示的是默認路徑下的test文件夾中的名叫hello的文件,帶上后綴名.html或btl等也可以識別。

@ResponseBody

@ResponseBody可以標注方法也可以標注類,當標注方法時表示該方法的返回值會被解析成json(字符串會不會被轉換),直接寫入HTTP Response Body中,視圖處理器將不會將return的參數識別成路徑。當它標注類時,類中所有方法的返回值都將直接返回值到頁面,相當於給所有的類都加上@ResponseBody注解。

@RestController

@RestController是@Controller和@ResponseBody的結合體,只能注解類,return返回的值將被轉換成json,字符串除外,直接寫入HTTP相應體返回到頁面中。

需要注意的是,只在類上注解@ResponseBody類中方法映射的URL並不能起作用,加上@Controller注解后才可以接受處理HTTP請求,同時加上 @RestController是@Controller和只寫@ResponseBody是一樣的效果

@RequestMapping

它可以注解類也可以注解方法,注解類時標注請求的路徑,標注方法時表示將特定的URL映射到指定的方法。@RequestMapping中有多個屬性來進一步匹配HTTP請求到方法:

  • value,請求的URL路徑,支持URL模板,正則表達式。和Ant路徑表達式。例如:
    在這里插入圖片描述
    則/test/tom,/test/123等路徑都會被匹配到Hello方法中來
    在這里插入圖片描述
    加入正則表達式[a-z]表示匹配一位所有的小寫字母。所以類似/test/a;/test/b等路徑都會被映射到Hello方法中。

    使用Ant路徑表達式時。“ * ”單個星號表示匹配任意字符:/test/ *.html,/test/hello. *
    " ** "用兩個星號表示任意路徑如圖中的/**/hello。使用?匹配單個字符,如/test/?.html

  • method,指定HTTP請求的方法,GET,POST,PUT,DELETE等,只有匹配才能調用。Spring提供了簡化的寫法:

@GetMapping
@PostMapping
@PutMapping等

所以
 @RequestMapping(value = "/test/hello",method = RequestMethod.GET)和
 @GetMapping("/test/hello")表示的意思是一樣的

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • consumes,指定HTTP請求頭中的Content-Type。
    例如。設置Content-Type=application/json,則對應接收ajax請求。可以在ajax中設置contentType="application/json"確保數據類型。

參數相關注解

@PathVariable:

用於獲取URL中的參數:一般{ }中的變量名與方法中的形參名一致(可以不加@PathVariable注解)
在這里插入圖片描述

如果名稱不一致則寫成:否則不單單是獲取不到參數,連方法都不執行!
在這里插入圖片描述

@RequestParam

@RequestParam,用來處理Content-Type為application/x-www-form-urlencoded(默認類型如果不指定),使用value屬性可以指定獲取參數的key。

@RequestBody

@RequestBody 注解一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據,在GET請求中沒有請求體所以一般不適用,在post請求中必須指定Content-Type后才能使用它,如ajax請求指定發送格式為application/json。


免責聲明!

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



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