使用 Spring MVC 生成輸出有兩種方式
- 您可以使用 RESTful
@ResponseBody 方法和 HTTP 訊息轉換器,通常用於返回 JSON 或 XML 等資料格式。程式客戶端、移動應用程式和啟用 AJAX 的瀏覽器是常見的客戶端。 - 或者,您可以使用檢視解析。儘管檢視完全能夠根據您的需要生成 JSON 和 XML(更多內容將在我的下一篇文章中介紹),但檢視通常用於為傳統的 Web 應用程式生成 HTML 等表示格式。
- 實際上還有第三種可能性——有些應用程式需要兩者,Spring MVC 很容易支援這種組合。我們將在最後回到這一點。
無論哪種情況,您都需要處理控制器返回的相同資料的多種表示形式(或檢視)。確定要返回哪種資料格式稱為內容協商。
有三種情況我們需要知道要在 HTTP 響應中傳送哪種資料格式
- HttpMessageConverters: 確定要使用的正確轉換器。
- 請求對映: 將傳入的 HTTP 請求對映到返回不同格式的不同方法。
- 檢視解析: 選擇要使用的正確檢視。
確定使用者請求的格式依賴於 ContentNegotationStrategy。開箱即用提供了預設實現,但您也可以根據需要實現自己的。
在這篇文章中,我想討論如何配置和使用 Spring 的內容協商,主要是在使用 HTTP 訊息轉換器的 RESTful 控制器方面。在稍後的文章中,我將展示如何專門使用 Spring 的 ContentNegotiatingViewResolver 來設定內容協商……