以前的例子裏有演示過,控制器(Controller)裏的方法加上@GetMapping註解,就能夠處理對應路徑上的GET請求了。除了它,還有對應的@PostMapping、@PatchMapping、@PutMapping和@DeleteMapping等等。這些註解都來源於一個更通用的註解@RequestMapping,字面意思就是請求映射。咱們來看看它的用法:瀏覽器
圖中有一個名爲method的註解參數,指明瞭@RequestMapping處理的是GET請求。若是把這個method註解刪掉,那麼home方法就會處理髮送到」/」路徑的全部請求。若是你無心在一個方法裏處理多種請求的話,我建議你在註解參數裏寫明須要處理的HTTP請求類型,或者使用更方便的@GetMapping或者@PostMapping等。app
@RequestMapping不只能夠加到方法上,也能夠加到類上。加到類上的時候,類中方法所指定的路徑都是相對的。post
一個連接的某個部分多是動態的,因此你可能須要經過路徑變量來獲取。@PathVariable就是用來獲取路徑變量的,路徑中的佔位符須要用花括號{}包圍:ui
能夠看到@GetMapping的路徑參數裏有佔位符「userId」,爲了獲取到它的值,能夠給show方法添加一個參數,而且加上@PathVariable註解,咱們能夠看到int變量的名字是userId,這樣他就會去和路徑中的userId佔位符匹配。當你像上圖那樣在瀏覽器輸入地址後,userId變量就獲的了值23。23只是我爲了演示隨便寫的數字,他能夠是任何數字,只要int存的下。不過要是放個字符串,會提示出錯的。3d
若是你不想讓int變量名和佔位符名稱同樣,能夠給@PathVariable添加註解參數,這樣你的int變量就能夠隨意重構了,以下。cdn
網頁連接後面是有可能跟上查詢參數(Query Parameter)的,這時須要使用@RequestParam註解,他的用法@PathVariable的用法有些相似,都須要給請求處理方法增長參數。對象
若是變量名和查詢參數的名稱同樣的話,@RequestParam的註解參數能夠省略。圖中展現了省略和不省略兩種狀況。在瀏覽器中你若是忘了傳遞userId參數或者傳遞的不是數字,會報錯的。blog
若是用戶忘了傳參數,好說,給他個默認值就行:字符串
你也可使用Optional對象來接受參數,經過isPresent方法判斷有沒有參數傳遞過來。注意此時@RequestParam的required參數要設爲false。get