@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