SpringMVC中的RequestMapping修飾類註解
@RequestMapping
該註解除了能修飾方法,還能修飾類。
如上一文章中提到的程式碼,修改後得到:
這時訪問hello()方法的的URL就變為了..../helloworld1/helloworld2package com.yoni.springmvc.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/helloworld1") @Controller public class HelloWorld { @RequestMapping("/helloworld2") public String hello(){ System.out.println("Hello World!"); return "success"; } }
@RequestMapping除了能請求URL對映請求外,還可以使用請求方法、請求引數、請求頭對映請求。
@RequestMapping的value、method、params及heads分別表示請求URL、請求方法、請求引數及請求的印社條件,之間的關係是“與”。
如上一段程式碼的hello()方法,如果將上面的@RequestMapping改為:@RequestMapping(value="/helloworld2",method=RequestMethod.POST)
那麼在頁面直接用<a>標籤訪問..../helloworld1/helloworld2,將會提示405錯誤,無法用GET的方法訪問資料。
這樣就只能用POST方法來訪問該URL地址,比如在頁面建一個表單,新增一個submit按鈕來訪問。
<form action="helloworld1/helloworld2" method="POST">
<input type="submit" value="submit"/>
</form>
將方法改為POST後,訪問才能成功,該功能比較常用。
引數params請求引數使的用方法,註解改為@RequestMapping(value="/helloworld2",params = {"username","age != 10“} )
表示請求的引數裡必須有username和age兩個引數,且age不能等於10,否則訪問失敗。
引數heads請求表頭的使用方法,註解改為@RequestMapping(value="/helloworld2",heads= {"Accept-Language=zh-cn,zh;q=0.8“} )
則表示在請求的時候,表頭引數Accept-Language一定只能是”zh-cn,zh;q=0.8“,如果不是該屬性,將無法訪問。
以上兩個引數在@RequestMapping註解中使用得比較少,主要是為了更精確的對映請求。
@RequestMapping註解還支援萬用字元,”?“表示一個字元,
如:@RequestMapping("/hellowworld2/?/helloworld3")表示URL地址為..../helloworld1/helloworld2/a/helloworld3,其中a可以是任意字元,但只能是一個字元。
”*“表示任意個字元,但僅僅只能是一層路徑,如/helloworld1/helloworld2/abcde/helloworld3
”**”匹配多層路徑,可以是多層路徑,如/helloworld1/helloworld2/abcde/abcde/abcde/helloworld3。