客戶端和服務端HTTP報文傳遞消息,而HTTP報文包含報文頭和報文體。通常,解析請求參數以及返回頁面都不需要我們關心HTTP報文體的讀取和生成過程。但在某些特定場景下需要直接到請求報文中讀取報文體,或者將返回的數據直接寫入到報文體中。
在SpringMVC中,可以利用RequestBody注解表示一個參數,說明解析它需要讀取報文體,也可以直接將參數類型聲明成HttpEntity<T>類型。與處理請求類似,如果想要將對象寫入到響應報文的報文體中,則可以返回HttpEntity<T>類型的數據或者在方法上標注ResponseBody。
一個例子:
import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/tests") public class TestController { @RequestMapping("/handle") public HttpEntity<String> handle() { HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.set("MyResponseHeader", "MyValue"); return new HttpEntity<String>("Hello World", responseHeaders); } }
這個例子最后可以將你的報文頭返回並自定義報文頭,這樣運用的場景就是你需要某些參數傳入header中時,需要這樣的寫法。
其他有用的注解:
其他有用的注釋 使用 @RequestParam 將 URL 參數插入方法中。 使用 @RequestHeader 將某一 HTTP 頭插入方法中。 使用 @RequestBody 將 HTTP 請求正文插入方法中。 使用 @ResponseBody 將內容或對象作為 HTTP 響應正文返回。 使用 HttpEntity<T> 將它自動插入方法中,如果將它作為參數提供。 使用 ResponseEntity<T> 返回具有自定義狀態或頭的 HTTP 響應。
這個是官方的文檔:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpEntity.html
