@RequestMapping的可選參數
value:表示需要匹配的url的格式。
method:表示所需處理請求的http 協議(如get,post,put,delete等),可選值為RequestMethod這個enum的值。
params:格式為”paramname=paramvalue” 或 “paramname!=paramvalue”。不帶參數則表示paramvalue可以為任意值。
如params = {"param1=1","param2!=2","param3"},表示對應的url必須包括param1,param2,param3三個參數,其中param1的值必須為1,param2的值不能為2,param3的值可以為任意值。
headers:用來限定對應的reqeust請求的headers中必須包括的內容,例如
headers={"Connection=keep-alive"}, 表示請求頭中的connection的值必須為keep-alive。
使用@requesMapping標注的處理函數包括的可選參數,除了HttpServletRequest, HttpServletResponse, HttpSession這些web應用中常見的參數及之前提到過的@PathVariable外,還可以包括以下可選的參數,其中大部分參數的順序沒有特殊要求的。
java.util.Locale
當前請求所屬的區域設置。
java.io.InputStream或java.io.Reader
用來讀取request content,相當於 request.getInputStream()或request.getReader();
java.io.OutputStream或java.io.Writer
用來生成reponse content,相當於response.getOutputStream()或response.getWriter()。
java.security.Principal
當前認證了的用戶
WebRequest或NativeWebRequest
Spring 對request,response,session等web元素封裝后的對象
HttpServletRequest/response/HttpSession等原始的web對象
java.util.Map 或 org.springframework.ui.Model或org.springframework.ui.ModelMap
用來存放domain model的map結構。
HttpEntity<?>
可用來讀取http請求的header和 body內容,注意因為httpentity,@RequestBody,Reader這三種類型的參數都是通過inputstram來讀取httpbody的數據的,而inputstream流不能反復讀取,因此這三種類型的參數不能放在一起使用。而且在沒有設置content-type或沒有設置相應的messageconverter的情況下,都會報錯。
Command 或 form objects
通過spring 的databinding機制將request請求中的參數自動轉換為對應的java bean實例。
Errors或BindingResult
對command或form objects值的校驗結果。此參數必須緊跟在需校驗的command或form object參數后面。因為databinding可以允許將輸入參數和多個java bean 進行綁定(也就是說我們可以把輸入request param轉換成為多個java 對象)。
SessionStatus
Session的狀態。當使用@SessionAttributes來標注請求需要session中對應的值時,在處理結束時,使用SessionStatus. setComplete()來將session設置為時效。
@RequestParam
將request參數和handler method參數做綁定。例如
@RequestParam(value="username",defaultValue="winzip",required=false) String name
表示將request中的username參數和handler method中的name參數綁定,缺省值為”winzip”,request請求中可以不傳遞此參數
@RequestHeader
將handler method中的參數與request header中的值綁定,例如
@RequestHeader(required=false,value="User-Agent") String ua
表示將header中的"User-Agent"與ua這個入參綁定。
@RequestBody
將handler method中的參數與request context body中的值綁定
例如
@RequestBody String u
表示將request body中的內容與u這個入參綁定。
@CookieValue
將handler method中的參數與cookie中的值綁定
例如
@CookieValue(value="JSESSIONID",required=false) String jssionid
@ModelAttribute
將handler method中的參數與對應的類型綁定,名稱缺省為類名(首字母小寫),如果ModelAttribute指定了值則以該值作為model attribute name。
例如
@ModelAttribute("ooxx") User u
則在modelmap中創建了一個鍵值為ooxx的model attribute。
@ModelAttribute User u 或 User u
在modelmap中創建了一個鍵值為user的model attribute