Springboot模板引擎——Thymeleaf集成

模板引擎的作用

主要是为了使用户界面与业务数据分离,从而提升开发效率。

Thymeleaf简介

1、Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎。
2、其主要目标是为开发工作流程提供一种优雅、高度可维护的创建模板的方式 。
3、Thymeleaf拥有适用于Spring Framework的模块,能实现大量工具的集成以及功能的插入,是现代HTML5 JVM Web开发的理想选择。

Thymeleaf特点

1、动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 Thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
2、开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL(JSP标准标签库)、 OGNL(对象导航图语言)表达式效果,避免每天套模板、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
3、多方言支持:Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
4、与Springboot完美整合,Springboot提供了Thymeleaf的默认配置,并且为Thymeleaf设置了视图解析器,我们可以像以前操作JSP一样来操作Thymeleaf。代码几乎没有任何区别,就是在模板语法上有区别。

基于Springboot的Thymeleaf 集成

步骤1:引入依赖(可在创建工程时在可视化向导中勾选)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

步骤2:配置thymeleaf(在application.properties中配置)

#指定模板所在的目录
spring.thymeleaf.classpath=/templates/
#检查模板路径是否存在
spring.thymeleaf.check-template-location=true
#是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。
spring.thymeleaf.cache=false
#模板文件后缀名
spring.thymeleaf.suffix= .html
#编码格式
spring.thymeleaf.encoding=UTF-8
#content-type
spring.thymeleaf.servlet.content-type=text/html
#spring.thymeleaf.mode的默认值是HTML5,其实是一个很严格的检查,改为LEGACYHTML5可以得到一个可能更友好亲切的格式要求。
#比如你在使用Vue.js这样的库,然后有<div v-cloak></div>这样的html代码,也被thymeleaf认为不符合要求而抛出错误。
spring.thymeleaf.mode = LEGACYHTML5

步骤3:在templates目录下新建一个HTML文件,例如:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p th:text="'用户名:'+${username}"></p>
<p th:text="'密码:'+${password}"></p>
</body>
</html>

步骤4:在controller层新建一个类,例如:

@Controller
public class UserController {
    /*** 采用model往request域中存值,存入2个普通的字符串*
     * @param model
     * @return
     */
    @GetMapping("/userinfo")  //访问的地址
    public String userInfo(Model model) {
        String username="xxx";
        String password="123456";
        model.addAttribute("username", username);
        model.addAttribute("password", password);
        return "userInfo";
    }
}

拓展

JSTL(JSP标准标签库)

1、简介
JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,本质上JSTL也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。
2、组成
(1)核心标签:核心标签库是整个JSTL中最常用的部分,主要由以下几部分组成:基本输入输出、流程控制、迭代操作和URL操作。负责Web应用的常见工作,如:循环、表达式赋值、基本输入输出等。
(2)I18N格式标签库:用来格式化显示数据的工作如:对不同区域的日期格式化等。
(3)XML标签库:用来访问XML文件的工作,支持JSP对XML文档的处理。
(4)数据库标签库:SQL标签库包括了大部分访问数据库的逻辑操作,包括查询、更新、事务处理、设置数据源等。可以做访问数据库的工作。
(5)函数标签库:用来读取已经定义的某个函数。
3、使用条件
(1)要在JSP页面中使用JSTL标签,需使用taglib指令引用标签库。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

(2)要在JSP中使用JSTL标签,还需要下载安装JSTL实现(Implementation)。(导入jstl的jar包)

OGNL(对象导航图语言)

1、简介
是应用于Java中的一个开源的表达式语言,作用是对数据进行访问,它拥有类型转换、访问对象方法、操作集合对象等功能。
2、用法
OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和美元符号这三个符号的使用。
(1)#的三个用途:
一、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext(),例如:session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName");
二、用于过滤和投影(projecting)集合,如books.{?#this.price<100};
三、构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
(2)%的用途:在标志的属性为字符串类型时,计算OGNL表达式的值。
(3)$的两个用途:
一、用于在国际化资源文件中,引用OGNL表达式。
二、在Struts 2和i18n中配置文件

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容