在上一篇文章中,我们了解了Springa DispatcherServlet是如何进行请求分发的。接下来,将介绍spring是如何找到需要的页面的。
下面是更好理解的一张图。
在SpringMVC中,控制器可返回三种类型的值,分别是:
(1) 字符串
(2) ModelAndView对象
(3) json数组
1、当返回值为字符串时,通过ModelAndView构造函数,传入返回的字符串,构造出一个ModelAndView对象。然后进行页面渲染
这时,返回的字符串加上配置文件中配置的前缀和后缀,就是该实图在项目中的路径。
2、当返回值为ModelAndView时,这是规范的视图名称,此时不需要进行对象的封装。
3、当控制器被@ResponseBody修饰的时候,返回值可以是json数组的形式。此时的返回值会在response被返回之前加到response的body部分。
实际上,通过源代码的追踪,可以看到在进行视图解析的时候,无论是返回字符串还是ModelAndView对象,后台都是按照ModelAndView对象进行处理的。当指定名称的视图不存在的时候,IDEA就会弹出错误提示如图的错误。
关于视图渲染的详细过程,请查看文章结尾的参考博文。
参考博文:https://blog.csdn.net/xcl522/article/details/41356405