@ReuqestMapping註解的處理方法和返回類型

    支持的方法參數類型
    一、請求或響應對象(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的環境下,
    就是應用中配置的LocaleResolverLocaleContextResolver
    五、與當前請求綁定的時區信息java.util.TimeZone/java.time.ZoneId,由LocaleContextResolver解析獲得
    六、用於存取請求正文的java.io.InputStreamjava.io.Reader,該對象與經過Servlet API拿到的輸入
    流/Reader
是同樣的
    七、用於生產響應正文的java.io.OutputStreamjava.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

相關文章
相關標籤/搜索