- 引用绝对 URL:
等价于:
- 上下文相关的 URL:
首先在 application.properties 中配置 Spring Boot 的上下文,以便于测试:
server.servlet.context-path=/myapp
引用路径:
等价于:
- 相对 URL:
这个相对是指相对于服务器的 URL,例如如下引用:
等价于:
应用程序的上下文 /myapp 将被忽略。
- 协议相对 URL:
等价于:
- 带参数的 URL:
等价于:
~{...}
片段表达式是 Thymeleaf 的特色之一,细粒度可以达到标签级别,这是 JSP 无法做到的。片段表达式拥有三种语法:
-
~{ viewName }
:表示引入完整页面 -
~{ viewName ::selector}
:表示在指定页面寻找片段,其中 selector 可为片段名、jquery选择器等 -
~{ ::selector}
: 表示在当前页寻找
举个简单例子。
在 resources/templates 目录下新建 my_fragment.html 文件,内容如下:
这里有两个 div,通过 th:fragment 来定义片段,两个 div 分别具有不同的名字。
然后在另外一个页面中引用该片段:
通过 th:replace 来引用片段。第一个表示引用完整的 my_fragment.html
页面;第二个表示引用 my_fragment.html
中的名为 javaboy_link
的片段;第三个表示引用当前页面名为 aaa 的片段,也就是上面那个 table。
3.1.2 字面量
这些是一些可以直接写在表达式中的字符,主要有如下几种:
-
文本字面量: ‘one text’, ‘Another one!’,…
-
数字字面量: 0, 34, 3.0, 12.3,…
-
布尔字面量: true, false
-
Null字面量: null
-
字面量标记:one, sometext, main,…
案例:
如果文本是英文,并且不包含空格、逗号等字符,可以不用加单引号。
3.1.3 文本运算
文本可以使用 +
进行拼接。
如果字符串中包含变量,也可以使用另一种简单的方式,叫做字面量置换,用 |
代替 '...' + '...'
,如下:
3.1.4 算术运算
算术运算有:+
, -
, *
, /
和 %
。
th:with 定义了一个局部变量 age,在其所在的 div 中可以使用该局部变量。
3.1.5 布尔运算
-
二元运算符:and, or
-
布尔非(一元运算符):!, not
案例:
3.1.6 比较和相等
表达式里的值可以使用 >
, <
, >=
和 <=
符号比较。==
和 !=
运算符用于检查相等(或者不相等)。注意 XML
规定 <
和 >
标签不能用于属性值,所以应当把它们转义为 <
和 >
。
如果不想转义,也可以使用别名:gt (>);lt (<);ge (>=);le (<=);not (!)。还有 eq (==), neq/ne (!=)。
举例:
3.1.7 条件运算符
类似于我们 Java 中的三目运算符。
其中,: 后面的部分可以省略,如果省略了,又同时计算结果为 false 时,将返回 null。
3.1.8 内置对象
基本内置对象:
-
#ctx:上下文对象。
-
#vars: 上下文变量。
-
#locale:上下文区域设置。
-
#request:(仅在 Web 上下文中)HttpServletRequest 对象。
-
#response:(仅在 Web 上下文中)HttpServletResponse 对象。
-
#session:(仅在 Web 上下文中)HttpSession 对象。
-
#servletContext:(仅在 Web 上下文中)ServletContext 对象。
在页面可以访问到上面这些内置对象,举个简单例子:
实用内置对象:
-
#execInfo:有关正在处理的模板的信息。
-
#messages:在变量表达式中获取外部化消息的方法,与使用#{…}语法获得的方式相同。
-
#uris:转义URL / URI部分的方法
-
#conversions:执行配置的转换服务(如果有)的方法。
-
#dates:java.util.Date对象的方法:格式化,组件提取等
-
#calendars:类似于#dates但是java.util.Calendar对象。
-
#numbers:用于格式化数字对象的方法。
-
#strings:String对象的方法:contains,startsWith,prepending / appending等
-
#objects:一般对象的方法。
-
#bools:布尔评估的方法。
-
#arrays:数组方法。
-
#lists:列表的方法。
-
#sets:集合的方法。
-
#maps:地图方法。
-
#aggregates:在数组或集合上创建聚合的方法。
-
#ids:处理可能重复的id属性的方法(例如,作为迭代的结果)。
这是一些内置对象以及工具方法,使用方式也都比较容易,如果使用的是 IntelliJ IDEA,都会自动提示对象中的方法,很方便。
举例:
3.2 设置属性值
这个是给 HTML 元素设置属性值。可以一次设置多个,多个之间用 ,
分隔开。
例如:
会被渲染成:
当然这种设置方法不太美观,可读性也不好。Thymeleaf 还支持在每一个原生的 HTML 属性前加上 th: 前缀的方式来使用动态值,像下面这样:
这种写法看起来更清晰一些,渲染效果和前面一致。
上面案例中的 alt 和 title 则是两个特殊的属性,可以一次性设置,像下面这样:
这个等价于前文的设置。
3.3 遍历
数组/集合/Map/Enumeration/Iterator 等的遍历也算是一个非常常见的需求,Thymeleaf 中通过 th:each 来实现遍历,像下面这样:
users 是要遍历的集合/数组,u 则是集合中的单个元素。
遍历的时候,我们可能需要获取遍历的状态,Thymeleaf 也对此提供了支持:
-
index:当前的遍历索引,从0开始。
-
count:当前的遍历索引,从1开始。
-
size:被遍历变量里的元素数量。
-
current:每次遍历的遍历变量。
-
even/odd:当前的遍历是偶数次还是奇数次。
-
first:当前是否为首次遍历。
-
last:当前是否为最后一次遍历。
u 后面的 state 表示遍历状态,通过遍历状态可以引用上面的属性。
3.4 分支语句
只显示奇数次的遍历,可以使用 th:if,如下:
th:if 不仅仅只接受布尔值,也接受其他类型的值,例如如下值都会判定为 true:
-
如果值是布尔值,并且为 true。
-
如果值是数字,并且不为 0。
-
如果值是字符,并且不为 0。
-
如果值是字符串,并且不为 “false”, “off” 或者 “no”。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
Java核心架构进阶知识点
面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的
内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补
到天花板技术停滞不前!**
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-CzjxvRUO-1711188128235)]
[外链图片转存中…(img-Yhpm7N7c-1711188128236)]
[外链图片转存中…(img-ryHwJSaq-1711188128237)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-T7d9TrRR-1711188128237)]
Java核心架构进阶知识点
面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Java核心架构进阶知识点,比如:JVM、高并发、多线程、缓存、Spring相关、分布式、微服务、RPC、网络、设计模式、MQ、Redis、MySQL、设计模式、负载均衡、算法、数据结构、kafka、ZK、集群等。而这些也全被整理浓缩到了一份pdf——《Java核心架构进阶知识点整理》,全部都是精华中的精华,本着共赢的心态,好东西自然也是要分享的
[外链图片转存中…(img-UUKYCKIV-1711188128238)]
[外链图片转存中…(img-V6inm8F5-1711188128238)]
[外链图片转存中…(img-p1oJLINq-1711188128239)]
内容颇多,篇幅却有限,这就不在过多的介绍了,大家可根据以上截图自行脑补