Model和ModelMap的区别,以及背后那个男人~

Model和ModelMap的区别

在彻彻底底的理解他们之前,首先了解复习一下java.util.Map接口。它有四个实现类,分别是 HashMapHashtableLinkedHashMapTreeMap 而今天主要是了解HashMap和LinkedHashMap。

  1. Map:

    Map为接口,主要用于存储健值对,根据键得到值,因此不允许键重复(重复了就覆盖掉),但允许值重复。

  2. HashMap :

    最常用的Map,实现了Map接口,同样为键值对形式,不允许键重复,具有很快的访问速度。HashMap最多只允许一条记录的键为Null,允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。(比如说:键同步数据覆盖等等)

  3. LinkedHashMap:

    LinkedHashMap简单来说是一个有序的HashMap,其是HashMap的子类,HashMap是无序的。

1、Model

Model是一个接口,其实现类为ExtendedModelMap,继承了ModelMap类。

public class ExtendedModelMap extends ModelMap implements Model

Model和ModelMap的区别,以及背后那个男人~_第1张图片

2、ModelMap

ModelMap是一个类,继承LinkedMap,因此为Map结构,可以使用Key/Value形式存储值。

public class ModelMap extends LinkedHashMap<String, Object>

Model和ModelMap的区别,以及背后那个男人~_第2张图片

主要作用如下:

  1. 用于传递控制方法存储数据到展示页面(JSP页面),通过EL表达式对对象的key进行取值。
  2. 存储数据主要在HttpServletRequest中,即request作用域中。
  • 在SpringMVC中具体说使用哪个,Map、Model、ModelMap、ModelAndView都可以。

就对于新手而言简单来说使用区别就是:

Map 为原生的储存键值的对象,自然的里面一大堆的方法可以使用。

Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;

ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;

ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。


当然更多的以后开发考虑的更多的是性能和优化,就不能单单仅限于此的了解。

最后:请使用80%的时间打好扎实的基础,剩下18%的时间研究框架,2%的时间去学点英文,框架的官方文档永远是最好的教程。

你可能感兴趣的:(Java日杂记)