使用 Spring MVC 生成输出有两种方式
- 您可以使用 RESTful
@ResponseBody 方法和 HTTP 消息转换器,通常用于返回 JSON 或 XML 等数据格式。程序客户端、移动应用程序和启用 AJAX 的浏览器是常见的客户端。 - 或者,您可以使用视图解析。尽管视图完全能够根据您的需要生成 JSON 和 XML(更多内容将在我的下一篇文章中介绍),但视图通常用于为传统的 Web 应用程序生成 HTML 等表示格式。
- 实际上还有第三种可能性——有些应用程序需要两者,Spring MVC 很容易支持这种组合。我们将在最后回到这一点。
无论哪种情况,您都需要处理控制器返回的相同数据的多种表示形式(或视图)。确定要返回哪种数据格式称为内容协商。
有三种情况我们需要知道要在 HTTP 响应中发送哪种数据格式
- HttpMessageConverters: 确定要使用的正确转换器。
- 请求映射: 将传入的 HTTP 请求映射到返回不同格式的不同方法。
- 视图解析: 选择要使用的正确视图。
确定用户请求的格式依赖于 ContentNegotationStrategy。开箱即用提供了默认实现,但您也可以根据需要实现自己的。
在这篇文章中,我想讨论如何配置和使用 Spring 的内容协商,主要是在使用 HTTP 消息转换器的 RESTful 控制器方面。在稍后的文章中,我将展示如何专门使用 Spring 的 ContentNegotiatingViewResolver 来设置内容协商……