在向客户端发送响应之前,ModelAndView是否序列化模型



在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发送的内容至少不是实际的模型,而是取决于所使用的视图技术。

最新更新