在springmvc中,当我们返回ModelAndView/Model对象时,它是否被序列化以在HTTP上发送?就像REST API中发生的情况一样,@ResponseBody注释的方法返回值被序列化。如果不是,在Spring MVC中,Model对象是如何通过HTTP传输的,因为我已经读到,如果没有序列化,对象就不能通过HTTP传输?
这取决于情况。这取决于所使用的视图技术。但对大多数人来说,它们将作为请求属性公开,这是在View
中完成的。AbstractView
具有大多数View
实现所使用的用于此的代码。
对于类似Freemarker的东西,模型既是作为请求属性公开的,也是添加到Freemarker内部模型对象中的。这样Freemarker就可以呈现页面,还可以使用模板中的标记来检索请求属性。
取决于实际使用的视图技术,如果某个东西被序列化,则取决于。对于生成HTML、PDF、Excel等的内容,不会序列化任何内容。所有渲染和处理都在服务器上完成,最终结果(完整视图(将发送到客户端。
然而,对于像MappingJackson2JsonView
这样的视图技术(还有其他技术(,它们实际上会使用Jackson序列化模型。但最终,这将是通过HTTP发送的JSON。
因此,通过HTTP发送的内容至少不是实际的模型,而是取决于所使用的视图技术。