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

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

Spring MVC 解析视图

  1. 无论我们返回的是String、还是ModelAndView还是View,SpringMVC都会给他装配成一个ModelandView
  2. Spring MVC 借助视图解析器(ViewResolver)得到最终
    的视图对象(View),然后用view.render方法得到结果
    最终的视图可以是 JSP ,也可能是
    Excel、JFreeChart 等各种表现形式的视图
    不同的视图对应不同的视图解析器
    在这里插入图片描述




视图View

  1. 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。

  2. Spring 在org.springframework.web.servlet 包中定义了一个高度抽象的 View接口:
    在这里插入图片描述

  3. 视图对象由视图解析器负责实例化。 且视图是无状态的,因为每一个请求都会创建一个新的视图对象,因此不存在线程安全问题

  4. 常用的视图实现类
    在这里插入图片描述

InternalResourceView

InternalResourceView将JSP或其他资源封装成一个视图,是nternalResourceViewResolver默认使用的视图实现类
InternalResourceView主要是搞通过转发的那个结果

JstlView

若项目中使用了 JSTL,则 SpringMVC 会自动把视图由
InternalResourceView 转为 JstlView
若使用 JSTL 的 fmt 标签则需要在 SpringMVC 的配置文件中配置国际化资源文件
在这里插入图片描述


视图解析器

  1. 视图解析器的作用比较单一:将逻辑视图解析为一个具体
    的视图对象。即逻辑视图转为物理视图

  2. 所有的视图解析器都必须实现 ViewResolver 接口
    在这里插入图片描述

  3. 常用的视图解析器实现类
    在这里插入图片描述

视图解析器优先级

每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高。
SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解
析,直到解析成功并返回视图对象,否则将抛出 ServletException 异



InternalResourceViewResolver

JSP 是最常见的视图技术,可以使用
InternalResourceViewResolver 作为视图解析器
在这里插入图片描述
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测试和开发

Python测试和开发

原文地址:https://www.cnblogs.com/phyger/p/14048167.html