支持的方法參數類型
一、請求或響應對象(Servlet API),能夠是任何具體的請求或響應類型的對象,好比ServletRequest
或HttpServletRequest對象等
二、HttpSession類型的會話對象(Servlet API),使用該類型的參數將要求這樣一個session存在,因
此參數永不爲null
三、org.springframework.web.context.request.WebRequest或org.springframework.web.context.request
.NativeWebRequest。容許存取通常的請求參數和請求/會話範圍的屬性,無需綁定使用Servlet/Portlet的
API
四、當前請求的地區信息java.util.Locale,由已配置的最相關的地區解析器解析獲得。在MVC的環境下,
就是應用中配置的LocaleResolver或LocaleContextResolver
五、與當前請求綁定的時區信息java.util.TimeZone/java.time.ZoneId,由LocaleContextResolver解析獲得
六、用於存取請求正文的java.io.InputStream或java.io.Reader,該對象與經過Servlet API拿到的輸入
流/Reader是同樣的
七、用於生產響應正文的java.io.OutputStream或java.io.Writer,該對象與經過Servlet API拿到的輸出
流/Writer是同樣的
八、org.springframework.http.HttpMethod,能夠拿到HTTP請求方法
九、包裝了當前被認證用戶信息的java.security.Principal
十、帶@PathVariable註解的方法參數,其存放了URL模板變量中的值,如find/{id}
十一、帶@MatrixVariable註解的方法參數,其存放了URI路徑段中的鍵值對,如矩陣變量等
十二、帶@RequestParam註解的方法參數,其存放了Servlet請求中所指定的參數,參數的值會被轉換成方法
參數所聲明的類型
1三、帶@RequestHeader註解的方法參數,其存放了Servlet請求中所指定的HTTP請求頭的值,參數的值會被
轉換成方法參數所聲明的類型
1四、@RequestBody註解的參數,提供了對HTTP請求體的存取,參數的值經過HttpMessageConverter被轉換成
方法所聲明的類型
1五、@RequestPart註解的參數,提供了對一個"multipart/form-data"請求塊(request part)內容的存取
1六、HttpEntity<?>類型的參數,提供了對HTTP請求頭和請求內容的存取,請求流是經過HttpMessageConverter被轉換成
entity對象的
1七、java.util.Map/org.springframework.io.Model/org.springframework.ui.ModelMap類型爲參數,用以
加強默認暴露給視圖層的模型(model)的功能
1八、org.springframework.web.servlet.mvc.support.RedirectAttributes類型的參數,用以指定重定向
下要使用到的屬性集和添加flash屬性
1九、命令或表單對象,用以將請求參數直接綁定到bean字段(多是經過setter方法),也能夠經過@InitBinder
註解和/或HanderAdapter的配置來定製這個過程的類型轉換。
20、org.springframework.validation.Errors/org.springframework.validation.BindingResult驗證結果
對象,用以存儲前面的命令或表單對象的驗證結果
2一、org.springframework.web.bind.support.SessionStatus對象,用以標記當前的表單處理已結束,這
將觸發一些清理操做:@SessionAttributes在類級別註解的屬性將被移除
2二、org.springframework.web.util.uriComponentsBuilder構造器對象,用以構造當前請求URL相關的
信息,好比主機名、端口號、資源類型、上下文路徑、servlet映射中的相對部分等
支持的方法返回類型
一、ModelAndView對象,其中model隱含填充了命令對象,以及註解了@ModelAttribute字段的存取器被調用
所返回的值
二、Model對象,其中視圖名稱默認由RequestToViewNameTranslator決定,model隱含填充了命令對象以
及註解了@ModelAttribute字段的存取器被調用所返回的值
三、Map對象,用以暴露model,與Model對象同樣
四、View對象,其中model隱含填充了命令對象,以及註解了@ModelAttribute字段的存取器被調用所返回的值。
handler方法也能夠增長一個Model類型的方法參數來加強model
五、String對象,其值會被解析成一個邏輯視圖名,其中model將默認填充了命令對象以及註解了@ModelAttribute
字段的存取器被調用所返回的值。handler方法也能夠增長一個Model類型的方法參數來加強model
六、void,若是處理器方法中已經對response響應數據進行了處理(好比在方法參數中定義一個ServletResponse
或HttpServletResponse類型的參數並直接向其響應體寫東西),handler方法也能夠增長一個Model類型的方法參
數來加強model
七、若是處理器方法註解了ResponseBody,那麼返回類型將被寫到HTTP的響應體中,而返回值會被HttpMessageConverters
轉換成所方法聲明的參數類型
八、HttpEntity<?>或ResponseEntity<?>對象,用以提供對Servlet HTTP響應頭和響應內容的存取,對象體會被
HttpMessageConverters轉換成響應流
九、HttpHeaders對象,返回一個不含響應體的response
十、Callable<?>對象,當應用但願異步地返回方法值時使用,這個過程由Spring MVC自身的線程來管理
十一、DeferredResult<?>,當應用但願方法的返回值交由線程自身決定時使用
十二、ListenableFutue<?>,當應用但願方法的返回值交由線程自身決定時使用
1三、ResponseBodyEmitter對象,可用它異步地向響應體中同時寫多個對象
1四、SseEmitter對象,可用它異步地向響應體中寫服務器端事件
1五、StreamingResponseBody對象,可用它異步地向響應對象的輸出流中寫東西
1六、其它任何返回類型,都會被處理成model的一個屬性並返回給視圖,該屬性的名稱爲方法級的@ModelAttribute所註解
的字段名(或以返回類型的類名做爲默認的屬性名)java