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