• 7.SpringMVC 配置式开发-ModelAndView和视图解析器


    ModelAndView

      1.Model(模型)

        1.model的本质就是HashMap,向模型中添加数据,就是往HashMap中去添加数据

        2.HashMap 是一个单向查找数组,单向链表数组

        3.LinkedHashMap,本质是一个HashMap,但其将Entry进行了扩展,变成双向的了

      2.View(视图)

        ModelAndView 内部通过 setViewName() 指定视图名称

        这个视图名称对应一个视图对象,这个视图对象会被封装在ModelAndView中,传给视图解析器来解析

    视图解析器ViewResolver

      试图解析器ViewResolver接口负责将处理结果生成View视图,常用的实现类有四种

      (1)InternalResourceViewResolver 视图解析器(默认)

      该视图解析器用于完成对当前web应用内部资源的封装与跳转(可以选择是否拼接web资源名称)

      对于内部资源的定义,也只能定义一种格式的资源:存放在同一目录的同一文件类型的资源文件

      (2)BeanNameViewReolver 视图解析器(可以转向外部资源)

      可以定义多个View 视图bean,让处理器中的ModelAndView 通过这些Bean的id的引用 来完成想View中封装资源的跳转

     1 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
     2     
     3     <!-- 定义多个 View 视图bean,让处理器中 的 ModelAndView 通过对这些 Bean 的 id 的引用 来完成向 View 中封装资源的跳转 -->
     4     <!-- 定义一个外部资源 View 对象 -->
     5     <bean id="taobao" class="org.springframework.web.servlet.view.RedirectView">
     6         <property name="url" value="http://www.taobao.com"/>
     7     </bean>
     8     
     9     <!-- 定义一个外部资源 View 对象 -->
    10     <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
    11         <property name="url" value="http://www.baidu.com"/>
    12     </bean>
    13     
    14     <!-- 定义一个内部资源 View 对象 -->
    15     <bean id="myInternalView" class="org.springframework.web.servlet.view.JstlView">
    16         <property name="url" value="/WEB-INF/jsp/hello.jsp"/>
    17     </bean>
    18 
    19 
    20     <bean id="/hello.do" class="com.springmvc.handlers.MyController"/>
    21     
    22     
    23 
    24 </beans>

    3.XmlViewResolver视图解析器 和 ResourceBundleViewResolver视图解析器

      当需要定义的View视图对象很多时,就是使springmvc.xml文件变得庞大,

      所以可以将这些View视图对象专门抽取出来,单独定义一个xml或resource文件,统一进行管理

    视图解析器的优先级

      视图解析器有一个order属性,专门用于设置多个视图解析器的优先级。数字越小,优先级越高,数字相同,先注册的优先级高

      

    1 <bean class="org.springframework.web.servlet.view.XmlViewResolver">
    2         <property name="location" value="classpath:myViews.xml"></property>
    3         <property name="order" value="1"></property>
    4     </bean>
  • 相关阅读:
    会话追踪技术
    request session application
    Java CAS同步机制 原理详解(为什么并发环境下的COUNT自增操作不安全): Atomic原子类底层用的不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改一个数值的安全性。
    mysql连接拍错总结
    git 从分支上创建一个分支
    linux ---> taskkill pid 8080 /f
    阿里java开发规范 强制约束
    for break
    Mybatis Update操作返回值问题
    springboot 缓存架构
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7405893.html
Copyright © 2020-2023  润新知