SpringBoot(二)——整合视图层(FreeMarker、Thymeleaf、SpringBoot 整合 jsp
一、FreeMarker
1、页面模板介绍
前后端不分离开发,除了前面经常用的 jsp ,还有 Freemarker、Thymeleaf。前后端虽说基本不需要模板了,但不是一定不需要,比如像是邮箱功能,或者登录注册验证码,这些还是有可能使用模板页面的。
2、Freemarker入门
a、Freemarker简介
看上图,可以发现跟 jsp 的使用方式差不多。
b、Freemarker创建
先看下 freemarker 的依赖:
然后是创建 freemarker 的文件:
然后 java 代码:
c、Freemarker 插值与表达式——直接输出值
(1)字符串:
如果要输出斜杠 \ ,则需要转义:
这里输出的就是: c:\work
如果不转义,就会报错。
如果需要转义的个数很多,可以在最前面加个 r :
(2)数字:
效果:
(3)布尔类型:
Freemarker 中不能直接展示布尔类型的值:
当为 true 时,展示真,为 false时,展示假。
(4)集合
效果:
(5)map
效果:
d、Freemarker 插值与表达式——输出变量
(1)对象
先创建一个实体类:
然后 controller 层代码:
然后前端:
效果:
也可以直接展示集合中第二个元素:
(2)map
前端:
效果:
如果要取 key 值跟 value 值的话:
效果:
e、字符串操作
然后前端:
效果:
f、比较运算
g、空值处理
在 Freemarker 中如果值不存在或者存在,但是为 null,都是会报错的。
解决方式:
笨办法,用判断语句,如果判断不为 null,则输出:
还有种写法就是,如果 值 不存在,则展示后面的内容:
再有就是,如果不存在,则不展示:
3、Freemarker 内建函数
内建函数涉及到的东西比较多,可以参考官方文档:http://freemarker.foofun.cn/ref_builtins.html。
这里举例子一些常用的:
日期如果不格式化会报错,相当于强制性的要格式化。
4、Freemarker 常用指令
a、分支控制指令——if else
由于前端的标签都用到 <> 尖括号,且大于小于号 < >,用的都是同一个符号,所以如果要用这个符号就需要转义,或者使用 gt 这种,如果都不想使用,可以这么用:
b、分支指令——switch
c、include
d、宏——macro
macro 用来定义一个宏。
那么宏怎么定义和使用呢?
先定义一个宏:
第一步先导入宏,接着就是使用:
然后效果:
看起来跟 include 没区别,但有其他用法:
java 代码:
接着 宏的代码:
将来展示什么内容就看传进来的是什么参数了。
如果 java 代码没有传 bs 进来,就会报错。
然后运行看效果:
e、nested——占位符
如果想要展示一段比较复杂的 html 结构,用上面的方法就没法整了,就需要通过这个来完成。要展示的 html 是什么样子,还不确定,就要看将来传的什么参数。
那么怎么传呢,就在上面讲的宏里面传参数,参数就会跑到这个占位符这里来:
然后效果:
f、noparse——禁止渲染
如果就想要输出字符串,不需要 Freemarker 渲染,则使用 noparse 标签:
效果:
二、FreeMarker 整合 SpringBoot 其他配置
1、整合
在 application . properties 文件里面配置:
像以前 jsp 中往 request 或者 session 中存属性,这里就需要设置暴露属性,然后再通过美元符号 $ 调用属性名即可。
如果 request 和 session 里面存的属性名冲突了,使用哪一个就看怎么配置,是否允许覆盖。
三、Thymeleaf
1、Thymeleaf简介
Thymeleaf 可以通过浏览器直接打开预览,且后缀也是 . html
2、Thymeleaf 的创建
3、Thymeleaf 的初步使用
java 代码:
效果:
4、名称空间
在以前版本比较旧的时候,需要写完整标签,标签要结束。且要导入名称空间,不然就不能运行:
5、Thymeleaf整合 SpringBoot 其他配置
6、手动渲染 HTML
7、Thymeleaf 基本表达式
a、简单表达式
如果是有个 user 对象,展示里面的属性,就这么写:
b、URL 相关
一般静态资源写 url 时,都推荐写绝对路径:
其他用法:
c、片段表达式
片段表达式的一个好处是颗粒度够细,能查找使用指定的片段:
举个例子:
然后效果:
8、内置对象
还是 session request 那些玩意:
9、设置属性值
10、遍历
11、分支语句——if
if 也能这么使用:
如果某个数组的个数为 10 个,则显示这个文字。
12、本地变量
这个我们前面已经涉及到了,使用 th : with 可以定义一个本地变量。
13、内联(了解)
四、SpringBoot 整合 jsp
1、整合
整合 jsp 跟以前的操作是基本一样的。
然后需要手动加入 jsp 依赖:
然后手动创建 webapp:
接着就是以前那样,在项目文件夹那里按 F4,然后按照以前的操作即可。
做完上面操作,右键才有创建 jsp 的选项。
接着就是 jsp 的前缀后缀配置: