【Spring实战学习笔记】第6章 渲染WEB视图

目录

6.1 理解视图解析

6.2 创建 JSP 视图

6.3 使用 Apache Tiles 视图定义布局

6.4 使用Thymeleaf


6.1 理解视图解析

控制器方法和视图的实现会在模型内容上达成一致,这是两者的最大关联,除此之外,两者应该保持足够的距离。

 

Spring MVC 定义了一个 ViewResolver 接口,它有一个 resolveViewName(String viewName,Locale locale) 方法,接收传入的 视图名和 Locale 对象。返回值是一个 View。View 接口的任务就是接受模型以及Servlet的request和response对象,并将输出结果渲染到response中。Spring 内置了多个 ViewResolver 实现

 

6.2 创建 JSP 视图

6.2.1 配置适用于 JSP 的视图解析器

InternalResourceViewResolver是最简单和最常用的视图解析器。它遵循一种约定,会在视图名上添加前缀后缀,进而确定一个Web应用中视图资源的物理路径

 

用@Bean注解的时候,我们可以按照如下的方式配置InternalResourceViewResolver

 

用XML配置:

 

如果想让InternalResourceViewResolver将视图解析为JstlView,而不是InternalResourceView的话,那么我们只需设置它的viewClass属性即可:

resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);

6.2.2 使用Spring的JSP库

Spring提供了两个JSP标签库,用来帮助定义Spring MVC Web的视图。其中一个标签库会用来渲染HTML表单标签,这些标签可以绑定model中的某个属性。另外一个标签库包含了一些工具类标签

 

6.3 使用 Apache Tiles 视图定义布局

6.3.1 配置Tiles视图解析器

在Spring中使用Tiles,需要配置一个 TilesConfigurer bean,它会负责定位和加载Tile定义并协调生成Tiles。还需要TilesViewResolver bean 将逻辑视图名称解析为Tile定义。

 

当配置TilesConfigurer的时候,所要设置的最重要的属性就是definitions。这个属性接受一个String类型的数组,其中每个条目都指定一个Tile定义的XML文件。

 

定义 Tiles

ApacheTiles提供了一个文档类型定义(document type definition,DTD),用来在XML文件中指定Tile的定义。每个定义中需要包含一个<definition>元素,这个元素会有一个或多个<put-attribute>元素

 

引用其他模板来创建视图:

 

6.4 使用Thymeleaf

Thymeleaf模板是原生的,不依赖于标签库。它能在接受原始HTML的地方进行编辑和渲染。

 

6.4.1 配置Thymeleaf视图解析器

要在Spring中使用Thymeleaf,我们需要配置三个启用Thymeleaf与Spring集成的bean:

  • ThymeleafViewResolver:将逻辑视图名称解析为Thymeleaf模板视图;
  • SpringTemplateEngine:处理模板并渲染结果;
  • TemplateResolver:加载Thymeleaf模板。

 

ThymeleafViewResolver是Spring MVC中ViewResolver的一个实现类。像其他的视图解析器一样,它会接受一个逻辑视图名称,并将其解析为视图

 

SpringTemplateEngine会在Spring中启用Thymeleaf引擎,用来解析模板,并基于这些模板渲染结果。

 

TemplateResolver会最终定位和查找模板。与之前配置InternalResourceViewResolver类似,它使用了prefix和suffix属性。前缀和后缀将会与逻辑视图名组合使用,进而定位Thymeleaf引擎

 

6.4.2 定义 Thymeleaf 模板

Thymeleaf通过自定义的命名空间,为标准的HTML标签集合添加Thymeleaf属性。

示例:

 

thymeleaf 官网:https://www.thymeleaf.org/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值