天天看点

【Spring MVC】视图和视图解析器

此文转载自:https://my.oschina.net/u/4301811/blog/4755154

​​大咖揭秘Java人都栽在了哪?点击免费领取《大厂面试清单》,攻克面试难关~>>>

【Spring MVC】视图和视图解析器

视图和视图解析器

  • Spring MVC 解析视图
  • 视图View
  • InternalResourceView
  • JstlView
  • 视图解析器
  • 视图解析器优先级
  • InternalResourceViewResolver
  • 无需经过handler 直接转发到页面

Spring MVC 解析视图

  1. 无论我们返回的是String、还是ModelAndView还是View,SpringMVC都会给他装配成一个ModelandView
  2. Spring MVC 借助视图解析器(ViewResolver)得到最终

    的视图对象(View),然后用view.render方法得到结果

    最终的视图可以是 JSP ,也可能是

    Excel、JFreeChart 等各种表现形式的视图

    不同的视图对应不同的视图解析器

    【Spring MVC】视图和视图解析器

视图View

  1. 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
  2. Spring 在org.springframework.web.servlet 包中定义了一个高度抽象的 View接口:
    【Spring MVC】视图和视图解析器
  3. 视图对象由视图解析器负责实例化。 且视图是无状态的,因为每一个请求都会创建一个新的视图对象,因此不存在线程安全问题
  4. 常用的视图实现类
    【Spring MVC】视图和视图解析器

InternalResourceView

InternalResourceView将JSP或其他资源封装成一个视图,是nternalResourceViewResolver默认使用的视图实现类

InternalResourceView主要是搞通过转发的那个结果

JstlView

若项目中使用了 JSTL,则 SpringMVC 会自动把视图由

InternalResourceView 转为 JstlView

若使用 JSTL 的 fmt 标签则需要在 SpringMVC 的配置文件中配置国际化资源文件

【Spring MVC】视图和视图解析器

视图解析器

  1. 视图解析器的作用比较单一:将逻辑视图解析为一个具体

    的视图对象。即逻辑视图转为物理视图

  2. 所有的视图解析器都必须实现 ViewResolver 接口
    【Spring MVC】视图和视图解析器
  3. 常用的视图解析器实现类
    【Spring MVC】视图和视图解析器

视图解析器优先级

每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高。

SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解

析,直到解析成功并返回视图对象,否则将抛出 ServletException 异

InternalResourceViewResolver

JSP 是最常见的视图技术,可以使用

InternalResourceViewResolver 作为视图解析器

【Spring MVC】视图和视图解析器

InternalResourceViewResolver 就是解析InternalResourceView的

无需经过handler 直接转发到页面

若希望直接响应通过 SpringMVC 渲染的页面,可以使用 mvc:viewcontroller 标签实现

<!-- 配置直接转发的页面 -->
  <!-- 可以直接相应转发的页面, 而无需再经过 Handler 的方法.  -->
  <mvc:view-controller path="/success" view-name="success"/>
  
  <!-- 在实际开发中通常都需配置 mvc:annotation-driven 标签 -->
  <mvc:annotation-driven></mvc:annotation-driven>      

更多内容详见微信公众号:Python研究所

继续阅读