SpringMVC中Model和ModelAndView的区别

10 篇文章 2 订阅
2 篇文章 0 订阅

SpringMVC中Model和ModelAndView的区别

两者的区别:

在SpringMVC中,Model和ModelAndView都是用于将数据传递到视图层的对象

Model是”模型“的意思,是MVC架构中的”M“部分,是用来传输数据的。

理解成MVC架构中的”M“和”V“,其中包含”Model“和”View“两部分,主要功能是:设置转向地址,将底层获取的数据进行存储(或者封装),最后将数据传递给View。

Model只是用来传输数据的,并不会进行业务的寻址。ModelAndView 却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似JSP的文件。

Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到JSP页面中。

ModelAndView包含Model和View两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置View的名称。

其次,两者还有一个最大的区别,每次发起请求后Spring MVC会自动创建Model对象,而ModelAndView需要我们自己创建

总结:

虽然Model和ModelAndView都可以用于将数据传递到视图层,但ModelAndView更加强大,因为它不仅可以传递数据,还可以指定要呈现的视图。如果你只需要传递数据而不关心视图,则可以使用Model。但如果你需要同时传递数据和指定视图,则应该使用ModelAndView。

Model在Controller层的写法

@Controller  //代表这个类会被Spring接管,被这个注解的类中所有方法,如果返回值是String,并且有具体的页面可以跳转,那么就会被视图解析器解析
public class IndexController {
    @RequestMapping("/demo")   //意为请求 localhost:8080/demo
    public String demo(Model model){
        //封装数据(向模型中添加数据,可以jsp页面直接取出并渲染)
        model.addAttribute("Content","Hello");
        //会被视图解析器处理
        return "Hello";   //返回到哪个页面     
    }
}

model方法是可以返回一个对象的。model.addAttribute(String s,Object o),返回对象要创建一个实体对象生成getter和Setter,还有同String()方法

ModelAndView在Controller层的写法

@Controller
@RequestMapping
public class IndexController {
        @RequestMapping("/demo2")
        public ModelAndView demo2(){
            ModelAndView modelAndView = new ModelAndView();
            //返回到那个前端文件
            modelAndView.setViewName("hello");  
            modelAndView.addObject("ContentOne","HelloOne");
            modelAndView.addObject("ContentTwo","HelloTwo");
            System.out.println(modelAndView);
            return modelAndView;
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值