ModelAndView 模型和视图核心对象
-
ModelAndView对象是指”模型(数据)与视图(界面)“对象
-
通过ModelAndView可将包含数据对象与模板引擎进行绑定
-
SpringMVC中默认的View是JSP,也可以是其他模板引擎(如Freemarker)
ModelAndView使用:
Controller类的数据绑定的方法返回值一定是ModelAndView对象,如下图,该方法请求的url是/um/view:

核心方法,进行视图页面的跳转,如下方法的含义是请求url为/um/view时,会跳转到/view.jsp,注意这里是根目录的,所以view.jsp一定要写在webapp的根目录下:

接下来则是我们关心的Model(数据)如何传递到View(视图),通过ModelAndView中的addObject方法,将数据加入到ModelAndView对象,并返回,这里即使返回给第二步跳转的页面。

在view.jsp页面通过JSTL表达式即可访问

ModelAndView 的核心用法:

页面重定向
controller通知浏览器重新发送一个新的请求,访问要跳转的地址。(注意,使用重定向后,页面的数据消失。。原因是,)
页面重定向使用场景--通常当跳转的页面和当前代码没有直接联系时使用(网址会变化,这样体验更好更明确)


相对路径-->访问页面(根据“类”和“方法”上 Mapping 映射地址的路径进行访问)
更推荐使用,绝对路径访问页面,因为使用相对路径时,其访问路径命名需要更加工程结构和文件名称来设置。而一旦工程结构变化,访问就会出错。所以推荐使用“绝对路径”的方式进行页面跳转。避免依赖关系产生的问题。



拓展:工作中常用的一种使用方式:
使用String和ModelMap 实现类似 ModelAndView的页面跳转效果

关于方法参数中,去掉ModelMap的使用情况

https://github.com/MingCaiXiong/spring-learn/commit/6e2eabc8bd6c8de09285376ded91dfe935223f73