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