> 文章列表 > thymeleaf的详解

thymeleaf的详解

thymeleaf的详解

1、thymeleaf渲染标签中文本内容

在标签中使用th:text

2、thymeleaf渲染标签中属性

在标签中使用th:属性

3、thymeleaf解析URL路径

th:href=“@{/}”,此时路径被thymeleaf解析之后,会自动添加上下文路径

如何在thymeleaf解析的路径中传输请求参数:

<a th:href="@{/firstServlet(username='admin',password='123456')}">测试Thymeleaf解析路径时发送请求参数</a>
<a th:href="@{/firstServlet?username=admin&password=123456}">测试Thymeleaf解析路径时发送请求参数</a>

4、域对象

4.1、请求域

类型:HttpServletRequest

范围:一次请求

获取方式:Servlet中的service()提供

应用场景:展示错误提示信息、列表功能、修改回显

4.2、会话域

类型:HttpSession

范围:一次会话(浏览器开启到浏览器关闭)

获取方式:request.getSession()

应用场景:记录用户的登录状态,书城项目中的购物车功能

4.3、应用域

类型:ServletContext

范围:整个web应用

获取方式:request.getServletContext()和session.getServletContext()

应用场景:Spring框架的IOC容器会共享到应用域中

4.4、域对象操作共享数据的方式

void setAttribute(String name, Object value):设置共享的数据

Object getAttribute(String name):获取共享的数据

void removeAttribute(String name):删除共享的数据

4.5、测试各个域对象的范围

a>通过FirstServlet向各个域对象共享数据,在页面中获取,观察获取情况

b>通过FirstServlet向各个域对象共享数据,通过SecondServlet跳转到页面,在页面中获取,观察获取情况

c>通过FirstServlet向各个域对象共享数据,之后关闭浏览器,在通过SecondServlet跳转到页面,在页面中获取,观察获取情况

d>通过FirstServlet向各个域对象共享数据,之后关闭服务器,在通过SecondServlet跳转到页面,在页面中获取,观察获取情况

注意:

会话域中的数据只跟浏览器是否关闭有关,跟服务器是否关闭没有关系

应用域中的数据只跟服务器是否关闭有关,跟浏览器是否关闭没有关系

4.5、thymeleaf获取各个域对象中的数据

获取请求域中的数据–>${属性名}

获取会话域中的数据–>${session.属性名}

获取应用域中的数据–>${application.属性名}

5、获取请求参数

${param.请求参数名},相当于request.getParameter(“请求参数名”);

若使用此方式获取多个同名的请求参数,则获取的是一个数组

6、thymeleaf的内置对象

#request相当于request对象

#lists操作集合的工具对象,例如其中的方法isEmpty()判断某个集合是否为空(null或长度为0)

7、通过OGNL获取对象的属性

对象.属性

对象[属性]

8、通过OGNL获取map中的数据

map.key

map[key],若key是纯数字,则只能使用该方式

9、分支

th:if=“条件”,若添加为true,则该属性所在的标签会在页面中存在

th:unless=“条件”,若添加为false,则该属性所在的标签会在页面中存在

10、迭代

th:each=“变量 : 集合”,需要循环哪个标签,就需要将该属性写在哪个标签中,就可以在该标签中使用变量表示集合中的每个数据

th:each=“变量,status : 集合”,status表示循环的辅助对象,常用属性:

count:当前循环的次数

index:当前循环的索引

first:当前循环是否为第一次循环

last:当前循环是否为最后一次循环

11、thymeleaf包含其他模板文件

a>为公共模块起名

<div th:fragment="hello"><h1>hello,thymeleaf</h1>
</div>

b>引用公共模块

th:include=“公共模块所在页面的逻辑视图 :: 公共模块的名字”:将公共模块中的内容引入到当前标签中

th:insert=“公共模块所在页面的逻辑视图 :: 公共模块的名字”:将公共模块本身的标签引入到当前标签中

th:replace=“公共模块所在页面的逻辑视图 :: 公共模块的名字”:将公共模块本身的标签替换当前标签

娱乐常识