Spring MVC数据绑定和响应——页面跳转(三)返回值为ModelAndView类型的页面跳转

发布于:2024-07-07 ⋅ 阅读:(71) ⋅ 点赞:(0)

一、ModelAndView对象组成部分

        使用方法的返回值可以设定跳转的逻辑视图名称,使用Model等对象实现页面跳转时传输数据。除此之外,Spring MVC还提供了兼顾视图和数据的对象ModelAndView,ModelAndView对象包含视图相关内容和模型数据两部分,其中视图相关的内容可以设置逻辑视图的名称,也可以设置具体的View实例;模型数据则会在视图渲染过程中被合并到最终的视图输出。

二、ModelAndView设置视图和数据模型的方法

方法声明

功能描述

void setViewName(String viewName)

为ModelAndView设置一个视图名,会覆盖预先存在的视图名称或视图

void setView(View view)

为ModelAndView设置一个视图,会覆盖预先存在的视图名称或视图

ModelAndView addObject(Object attributeValue)

向ModelAndView的数据模型中添加数据

ModelAndView addObject(String attributeName, Object attributeValue)

向ModelAndView的数据模型中添加指定名称的数据

ModelAndView addAllObjects

(Map<String, ?> modelMap)

向ModelAndView的数据模型中添加数据。数据名称为Map中的元素的key,数据的值为Map中key对应的值

三、ModelAndView方法说明

        setViewName()方法和setView()方法都是为ModelAndView对象设置视图的方法,其中前者使用更方便,因此setViewName()方法比较常用。后3个方法都是向ModelAndView对象中添加模型数据的,其中addObject(Object attributeValue)方法添加的attributeValue,默认名称为attributeValue类型全限定名的最后一个单词且首字母小写;addObject(String attributeName, Object attributeValue)方法可以在页面上以${attributeName}方式取出attributeValue。

接下来通过一个案例演示返回值为ModelAndView类型的页面跳转,案例具体实现步骤如下。

1、修改文件PageController.java,新增showModelAndView()方法,在showModelAndView()方法中使用ModelAndView封装数据和视图,完成页面跳转时传递数据。

@RequestMapping("/showModelAndView")
public ModelAndView showModelAndView() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("username","test");
    User user = new User();	user.setPassword("password");
    modelAndView.addObject("user",user);
    modelAndView.setViewName("register");
    return modelAndView;
}

        2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showModelAndView。访问后,浏览器页面进行跳转。访问地址后执行了showModelAndView()方法,方法执行后,添加的模型数据都在register.jsp页面成功取出。