SpringMVC中的Model和ModelAndView区别

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

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

3:.Model只是用来传输数据的,并不会进行业务的寻址。ModelAndView 却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中;ModelAndView包含model和view两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称

4: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()方法

5: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","helloTeo");
            System.out.println(modelAndView);
            return modelAndView;
        }
}

ModelAndView有的方法和Model很类似,一共有下面这些方法。

构造方法:

  • ModelAndView() //默认构造函数豆式的用法:填充bean的属性,而不是将在构造函数中的参数。
  • ModelAndView(String viewName) //方便的构造时,有没有模型数据暴露。
  • ModelAndView(String viewName, Map model) //给出创建一个视图名称和模型新的ModelAndView。
  • ModelAndView(String viewName, String modelName, Object modelObject) //方便的构造采取单一的模式对象。
  • ModelAndView(View view) //构造方便在没有模型数据暴露。
  • ModelAndView(View view, Map model) //创建给定一个视图对象和模型,新的ModelAndView。
  • ModelAndView(View view, String modelName, Object modelObject) //方便的构造采取单一的模式对象。

类方法

  • ModelAndView addAllObjects(Map modelMap) //添加包含在所提供的模型中的所有条目。
  • ModelAndView addObject(Object modelObject) //添加对象使用的参数名称生成模型。
  • ModelAndView addObject(String modelName,ObjectmodelObject) //对象添加到模型中。
  • void clear() //清除此ModelAndView对象的状态。
  • Map getModel() //返回的模型图。
  • protectedMap getModelInternal() //返回的模型图。
  • ModelMap getModelMap() //返回底层ModelMap实例(从不为null)。
  • View getView() //返回View对象,或者为null,如果我们使用的视图名称由通过一个ViewResolverDispatcherServlet会得到解决。
  • String getViewName() //返回视图名称由DispatcherServlet的解决,通过一个ViewResolver,或空,如果我们使用的视图对象。
  • boolean hasView() //指示此与否的ModelAndView有一个观点,无论是作为一个视图名称或作为直接查看实例。
  • boolean isEmpty() //返回此ModelAndView对象是否为空,即是否不持有任何意见,不包含模型。
  • boolean isReference() //返回,我们是否使用视图的参考,i.e.
  • void setView(Viewview) //设置此ModelAndView的视图对象。
  • void setViewName(StringviewName) //此ModelAndView的设置视图名称,由通过一个ViewResolverDispatcherServlet会得到解决。
  • String toString() //返回这个模型和视图的诊断信息。
    加粗样式boolean wasCleared()?? //返回此ModelAndView对象是否为空的调用的结果,以清除(),即是否不持有任何意见,不包含模型。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值