当前位置: 首页 > wzjs >正文

境外网站做网站涉黄广州网络推广有限公司

境外网站做网站涉黄,广州网络推广有限公司,wordpress注册接口,金蝶软件官网下载在 Spring MVC 中,Model, ModelMap, 和 ModelAndView 都是用来在 Controller 和 View 之间传递数据的,但它们在使用方式和功能上有所不同。 它们的核心在于:Spring MVC 需要知道两件事来渲染视图:① 数据 (Model) ② 视图名称 (V…

在 Spring MVC 中,Model, ModelMap, 和 ModelAndView 都是用来在 Controller 和 View 之间传递数据的,但它们在使用方式和功能上有所不同。

它们的核心在于:Spring MVC 需要知道两件事来渲染视图:① 数据 (Model) ② 视图名称 (View Name)

下面我们详细介绍一下它们的关系和区别:

  1. Model (接口)

    • 是什么Model 是一个接口 (org.springframework.ui.Model)。它主要用于在 Controller 方法中添加需要在 View 中展示的数据。
    • 如何工作:当我们在 Controller 方法的参数中声明一个 Model 类型的参数时,Spring MVC 会自动创建一个 Model 的实例(通常是 ExtendedModelMap 的实例)并将其传递给我们的方法。
    • 主要方法
      • addAttribute(String attributeName, Object attributeValue): 添加单个属性。
      • addAttribute(Object attributeValue): 添加属性,名称由类型推断。
      • addAllAttributes(Map<String, ?> attributes): 添加一个 Map 中的所有属性。
      • mergeAttributes(Map<String, ?> attributes): 合并一个 Map 中的属性,如果键已存在则覆盖。
      • containsAttribute(String attributeName): 检查是否存在某个属性。
    • 视图选择:当使用 Model 时,Controller 方法通常返回一个 String 类型的值,这个字符串就是逻辑视图名。Spring MVC 会根据这个视图名找到对应的视图进行渲染。
    • 示例
      @Controller
      public class MyController {@GetMapping("/showData")public String showData(Model model) {model.addAttribute("message", "Hello from Model!");User user = new User("John Doe", 30);model.addAttribute("user", user);return "dataView"; // 返回逻辑视图名}
      }
      
  2. ModelMap (类)

    • 是什么ModelMap 是一个类 (org.springframework.ui.ModelMap),它实现了 Model 接口,并且继承自 java.util.LinkedHashMap
    • 如何工作:与 Model 类似,我们可以在 Controller 方法参数中声明它,Spring MVC 会提供相应的实例。因为它是一个 Map,所以我们可以使用所有 Map 的方法(如 put(), get() 等)以及 Model 接口定义的方法。
    • Model 的关系ModelMapModel 接口的一个具体实现。当我们使用 Model 接口时,Spring MVC 内部提供的是 ModelMap(或其子类 ExtendedModelMap)的实例。
    • 视图选择:与 Model 相同,Controller 方法通常返回一个 String 类型的逻辑视图名。
    • 为什么存在
      • 提供了 Map 的便利性,如果已经有了一个 Map 对象,可以直接用 addAllAttributesputAll
      • 历史原因,在泛型广泛使用前,ModelMap 提供了类型安全(相对于直接使用 Map<String, Object>)。
    • 示例
      @Controller
      public class MyController {@GetMapping("/showDataWithModelMap")public String showDataWithModelMap(ModelMap modelMap) {modelMap.addAttribute("message", "Hello from ModelMap!");modelMap.put("anotherMessage", "Using put method!"); // Map 的方法User user = new User("Jane Doe", 25);modelMap.addAttribute("user", user);return "dataView"; // 返回逻辑视图名}
      }
      
  3. ModelAndView (类)

    • 是什么ModelAndView 是一个类 (org.springframework.web.servlet.ModelAndView),它是一个容器,同时持有 模型数据 (Model)视图信息 (View)
    • 如何工作:与 ModelModelMap 不同,ModelAndView 对象是由我们在 Controller 方法中创建并返回的。我们不需要将其声明为方法参数(虽然也可以,但不常见)。
    • 主要方法/构造函数
      • ModelAndView(String viewName)
      • ModelAndView(String viewName, Map<String, ?> model)
      • ModelAndView(String viewName, String modelName, Object modelObject)
      • addObject(String attributeName, Object attributeValue): 添加模型数据。
      • setViewName(String viewName): 设置逻辑视图名。
      • setView(View view): 直接设置一个 View 对象。
      • getModel(): 获取模型数据 (返回一个 Map)。
      • getModelMap(): 获取模型数据 (返回一个 ModelMap)。
    • 视图选择:视图信息直接包含在 ModelAndView 对象中。
    • 示例
      @Controller
      public class MyController {@GetMapping("/showDataWithModelAndView")public ModelAndView showDataWithModelAndView() {ModelAndView mav = new ModelAndView();mav.setViewName("dataView"); // 设置逻辑视图名mav.addObject("message", "Hello from ModelAndView!");User user = new User("Peter Pan", 100);mav.addObject("user", user);return mav; // 返回 ModelAndView 对象}
      }
      

关系总结

  • Model 是一个接口,定义了添加数据到模型的基本操作。
  • ModelMapModel 接口的一个实现,它本身是一个 LinkedHashMap,提供了 Map 的操作便利性。
  • ModelAndView 是一个独立的类,它封装了模型数据(内部使用 ModelMap 或类似的 Map 结构来存储数据)和视图信息。

区别总结

特性Model (接口)ModelMap (类)ModelAndView (类)
类型接口类 (实现 Model, 继承 LinkedHashMap)
主要职责仅传递数据仅传递数据 (以 Map 形式)传递数据 指定视图
如何获取实例作为 Controller 方法参数 (Spring 注入)作为 Controller 方法参数 (Spring 注入)在 Controller 方法中 new 出来并返回
视图指定Controller 方法返回 String 视图名Controller 方法返回 String 视图名视图名或 View 对象在 ModelAndView 内部设置
返回值String (逻辑视图名)String (逻辑视图名)ModelAndView 对象本身
灵活性专注于数据,视图名解耦专注于数据,视图名解耦,有 Map 特性数据和视图紧密耦合在一个对象中

使用场景?

  • Model (推荐)

    • 这是目前最常用和推荐的方式。
    • 当 Controller 方法的主要职责是准备数据,并且视图名是固定的或者可以通过简单的字符串返回时。
    • 代码更简洁,职责分离更清晰(方法只关注数据,返回类型指明视图)。
  • ModelMap

    • 如果需要 Map 的特定方法,或者想强调模型数据是一个 Map 结构时。
    • 实际上,由于 Model 接口已经足够强大,并且 Spring 内部通常用 ModelMap 的子类 ExtendedModelMap 来实现 Model,所以直接使用 Model 接口通常更好。
  • ModelAndView

    • 当 Controller 方法需要根据逻辑动态决定返回哪个视图,或者需要返回一个具体的 View 对象时。
    • 在一些较早的 Spring MVC 代码中比较常见。
    • 当你想将数据和视图信息明确的捆绑在一起返回时。
    • 如果你需要返回 null 来指示不渲染任何视图(例如,在某些拦截器或特殊处理中),ModelAndView 也可以做到(返回 nullModelAndView)。

Spring MVC 实践建议:

优先使用 Model 作为方法参数,并让 Controller 方法返回 String 类型的逻辑视图名。这种方式更简洁,也更符合 Spring MVC 的设计,即 Controller 负责处理请求、准备数据,并将逻辑视图名交给 ViewResolver 去解析。

只有在确实需要将模型和视图紧密绑定,或者需要动态决定视图对象本身时,考虑使用 ModelAndViewModelMap 的使用场景相对较少,通常 Model 接口就能满足需求。


文章转载自:

http://s8HQ27Gl.qcrhb.cn
http://kiQOiaOr.qcrhb.cn
http://6lIpamAw.qcrhb.cn
http://BPAG1JnR.qcrhb.cn
http://F8Jmbva7.qcrhb.cn
http://51AAw1Gx.qcrhb.cn
http://kdSDuruP.qcrhb.cn
http://vmsCEVzO.qcrhb.cn
http://mLB0ilHO.qcrhb.cn
http://3BPfnz5O.qcrhb.cn
http://MXuw9GVK.qcrhb.cn
http://gqqyLThx.qcrhb.cn
http://Uxh58C8x.qcrhb.cn
http://ID1XdlM3.qcrhb.cn
http://T88WhAJe.qcrhb.cn
http://tlWV0xdt.qcrhb.cn
http://UN05mrCH.qcrhb.cn
http://D0cTfZ6f.qcrhb.cn
http://BTwGg8DB.qcrhb.cn
http://Fl7rUiT4.qcrhb.cn
http://btiIUc6F.qcrhb.cn
http://8SxUKPlc.qcrhb.cn
http://DqCYVIJm.qcrhb.cn
http://70ZnW1lL.qcrhb.cn
http://TWNRa9Pz.qcrhb.cn
http://3BNpQdBL.qcrhb.cn
http://TxkbzqX8.qcrhb.cn
http://cKjlh300.qcrhb.cn
http://Lv8hHMIM.qcrhb.cn
http://90wzFXVa.qcrhb.cn
http://www.dtcms.com/wzjs/674628.html

相关文章:

  • 建站宝盒v8破解版下载自己做的网站加载速度慢
  • 注册公司是在哪个网站山东淄博网站建设公司
  • 河津市城乡建设局网站wordpress 批量发布器
  • 在大学做网站赚钱吗网站的配置标题
  • 聊城集团网站建设报价市场推广
  • 广州网站快速优化排名网站备案流程多少钱
  • 网站怎么才能被百度收录微信公众号小程序开发多少钱
  • 为什么点不开网站做一个网页难不难
  • 公司网站建设 上海小制作小发明手工简单又漂亮
  • 中国工程建设交易信息网站网站seo优化是什么
  • 沈阳网站优化快站淘客中转页
  • 怎么做网站电影本地网站制作
  • 如何用微信公众号做企业网站如何建设一个自己 的网站
  • 全国送花网站行业网站策划方案
  • 做本地分类信息网站赚钱吗网络系统管理技能大赛教程
  • 营销型网站建设怎么样鹿泉专业网站建设
  • 哪个网站专业做安防石家庄新闻
  • 网站诸多合肥教育平台网站建设
  • 软文发布网站网站被降权会发生什么
  • 网站开发费用如何入账手机网站无响应
  • 网站推广手段十大互联网装修平台排名
  • 网站定制公司地址企业网站模板编辑软件
  • 做网站的设计理念wordpress 安装权限管理
  • 北京市住房和城乡建设部网站首页作文网址
  • 东莞网站建设基础型用c 做网站设计系统的项目作业
  • 制作人在那个网站能看做网站的广告
  • 过年做哪个网站能致富WordPress搜索引擎链接提交
  • 丹麦做网站公司有哪些wordpress 编程语言
  • 成都网站推广如何苏州市相城区住房和城乡建设局网站
  • 建筑品牌网站网站内链少改怎么做