这里我们就不再使用老旧的jsp也不想使用freemaker(语法不舒服), velocity据说阿里用的多,我们这次不用,就用html作为前端
org.springframework.boot
spring-boot-starter-thymeleaf
这里注意添加属性,设定版本,设定版本是为了不再日志中显示thymeleaf的日志.
3.0.0.RELEASE
2.0.0
2. 在application.properties中进行thymeleaf的配置
#不使用缓存
spring.thymeleaf.cache=false #html具有缓存的特点,这里不用,每次刷新都请求服务器
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
3. 在resources下面建立templates文件夹,放置html文件
以basic.html文件为例:
基础数据上传页面
这是基础数据的上传页面
4. 写controller控制器,进行页面跳转
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Map;
/**
* @author zk
* @Description: just for test
* @date 2018-08-09 16:53
*/
@Controller
public class DemoController {
/**
* 跳转到基础数据上传的页面
*/
@GetMapping("to_basic")
public String jumpToBasic(Map map) {
map.put("name", "昂首千秋远,笑傲风间,堪寻敌手共论剑,高处不胜寒");
return "/basic";
}
}
前端页面取出数据name的数据来.就可以实现了.
下面介绍一下thymeleaf的语法,其实没啥的,不知道怎么实现,看看就行了,没必要记住了(下面的是从复制来的,哈哈哈):
一、引用命名空间
在html中引入此命名空间,可避免编辑器出现html验证错误,虽然加不加命名空间对Thymeleaf的功能没有任何影响。
二、输出内容
2.1 Welcome to our grocery store!
说明:
1. th:text 用来将内容输出到所在标签的body中。
2. #{home.welcome} 用来引入数据home对象中的 welcome属性。
3. 可以用th:utext 用来显示“unescaped ” 的html内容。
2.2 Today is: 13 February 2011
说明:${today} 用来引用 today 变量
三、访问对象
${param.x} 返回名为x 的 request参数。(可能有多个值)
${session.x} 返回名为x的Session参数。
${application.x} 返回名为 servlet context 的参数。
四、基本语法
4.1 #{home.welcome} -- 访问数据
4.2 #{home.welcome(${session.user.name})} -- 格式化数据 当 home.welcome 为 "abcdegf{0}" 类似这种内容时。(多个参数以逗句分隔)。
4.3 ${today} --- 访问变量
4.4 访问基本对象
#ctx: the context object.
#vars: the context variables.
#locale: the context locale.
#request: (only in Web Contexts) the HttpServletRequest object.
#response: (only in Web Contexts) the HttpServletResponse object.
#session: (only in Web Contexts) the HttpSession object.
#servletContext: (only in Web Contexts) the ServletContext object.
其它公共对象参考: http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#appendix-a-expression-basic-objects
4.5 日期的输出
13 May 2011
4.6 星号语法
Name: Sebastian.
Surname: Pepper.
Nationality: Saturn.
4.7 输出URL
Product List
view
4.8 使用代码段
4.9 直接输出内容
-- 输出字符
-- 输出数据表达式
--输出布尔表达式
-- 带变量的
4.10 条件表达式
...
...省略 false 结果的表达方式
...省略 true 结果的表达方式
Age: 27.
no user authenticated --不做任何处理时用下划线 _ 表示
4.11 格式化
... --${{.}} 调用默认的格式化器来输出结果。
4.12 预处理
Some text here...
说明:thymeleaf 的处理模板内容的顺序与书写顺序无关,只能通过 __${expression}__ ,来将需要先一步计算出来后面 要用的变量指定为优化处理。
五、设置 Attribute 值
5.1 设置任何Attribute 的方法
--设置单个
--一次设置多个
5.2 设置一些内置的Attribute的方法
Product List
其它的可用属性:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#setting-value-to-specific-attributes
5.3 设置html里没有指的任何属性的语法
... ---whatever 可以换成任何你想设的属性
六、循环输出的语法
6.1 基本循环
Onions
2.41
yes
6.2 循环状态的使用
NAME
PRICE
IN STOCK
Onions
2.41
yes
关于状态的其它信息的使用详细参考:http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#keeping-iteration-status
七、条件判断
7.1 if 和 unless
view
view
7.2 switch 语句
User is an administrator
User is a manager
User is some other thing
--默认的 case 相当于default
八、模板 include
8.1 定义和引用代码块
定义代码块
© 2011 The Good Thymes Virtual Grocery
引用代码块
...
引用未用fragment 标注的代码块
© 2011 The Good Thymes Virtual Grocery
...
8.2 th:insert th:replace th:include 之间的区别
th:insert --- 插入代码块 th:replace -- 替换代码块会替换掉容器标签 th:include ---- 和insert相似但只会插入fragment标注body内的内容。
8.3 带参数的代码段
...
...
...
九、局部变量的使用示例
The name of the first person is Julius Caesar.
The name of the first person is Julius Caesar.
But the name of the second person is
Marcus Antonius.
十、注释
下面这个博客写的一些thymeleaf的坑,可以看看
https://my.oschina.net/u/2338224/blog/1611910
最近在看netty,感觉这个网络框架封装的确实很厉害,还在下载视频写案例中.
Java Framework,欢迎各位前来交流java相关
QQ群:965125360