springmvc中Model和ModelAndView

一、基础

  1. Model
    是数据容器,只负责存放数据,不保存视图名称。
java 复制代码
public class Usercontroller1 {
@RequestMapping("/test1")//映射地址
    public  String test1(Model model){//传对象参数
    System.out.println(model);
        model.addAttribute("model","springmvc1234");
        return "test";//页面WEB-INF/jsp/test.jsp
    }

返回值 String:代表跳转的视图名
数据放 Model,视图名单独 return

  1. ModelAndView(常用主流)
    同时封装两部分:Model(数据) + View(视图名称)
java 复制代码
 ModelAndView mv = new ModelAndView();
        mv.addObject("msg1","spring");//保存数据k-v模式
        mv.addObject("m",new User("123"));
        mv.setViewName("hello");//跳转set的页面并且在其中取值
        return mv;

二、常用方法

Model:

java 复制代码
model.addAttribute("key",value);
model.addAllAttributes(map);

ModleAndView:

java 复制代码
mav.addObject("key",value);   //存数据
mav.setViewName("login");     //设置视图
//支持转发、重定向
mav.setViewName("forward:/user/list");
mav.setViewName("redirect:/login");

日常开发大多数使用 Model + 返回 String,代码简洁;
如果需要在方法内部多处动态切换视图,适合使用 ModelAndView

三、区别

Model:仅存储数据,视图名称由方法返回字符串提供;
ModelAndView:同时包含数据和视图名称,封装为一个对象;
两者数据都存放在 request 域,一次请求有效;
视图解析器最终根据视图名跳转页面。

java 复制代码
//方式1 Model + String
public String demo(Model model){
    model.addAttribute("name","张三");//存值
    return "index";//返回值=页面
}

//方式2 ModelAndView
public ModelAndView demo(){
    ModelAndView mav=new ModelAndView();
    mav.addObject("name","张三");//存值
    mv.setViewName("hello");//跳转set的页面并且在其中取值
    return mav;
}

封装(三大特性)

权限控制:private属性 + get/set,保护数据。

封装成对象

功能:把一组相关数据整合在一起,方便传输、保存。

相关推荐
青 春 记 忆5 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO35 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
「QT(C++)开发工程师」6 小时前
C++ 11 常用for循环
开发语言·c++
我还记得那天6 小时前
0 初识C++
开发语言·c++
FfHUCisI7 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI7 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
lemon_sjdk8 小时前
ObjectProperty
java·开发语言·算法
临沂GEO8 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白8 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring