静态资源和模板引擎
静态资源默认存放在resources下的public, resources, static目录, 而且同名优先级比较resources>static>public
在静态资源目录中的index.html会成为首页
templates目录下的所有页面只能通过controller来跳转, 相当于WEB-INF, 需要模板引擎提供视图解析器来驱动
模板引擎thymeleaf
-
导入依赖
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId> </dependency>
-
controller
@RequestMapping("/test") public String index(Model model) { model.addAttribute("msg", "<h1>hello thymeleaf</h1>"); model.addAttribute("users", Arrays.asList("野比大雄", "野原新之助")); return "test"; }
-
test.html
<!DOCTYPE html> <!--加入约束--> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--不会转义--> <div th:text="${msg}"></div> <!--会转义--> <div th:utext="${msg}"></div> <hr> <!--从users中遍历出所有的元素--> <h1 th:each="user:${users}" th:text="${user}"></h1> <!--行内写法--> <h1 th:each="user:${users}">[[${user}]]</h1> </body> </html>
标准表达式语法
-
简单表达式 (simple expressions)
- 变量表达式 ${...}
- 选择变量表达式 *{...}
- 消息表达式 #{...}
- 链接url表达式 @{...}
-
字面量
- 文本 'one text','another one!',...
- 数值 0,34,3.0,12.3,...
- 布尔类型 true false
- 空 null
- 文本字符 one,sometext,main
-
文本操作
- 字符串连接 +
- 字符串连接 |The name is ${name}|
-
算术运算
- 二元运算符 +, - , * , / , %
- 负号(一元运算符) -
-
布尔操作
- 二元操作符 and,or
- 非(一元操作符) !,not
-
关系操作符
- > , < , >= , <= (gt , lt , ge , le)
- == , != (eq, ne)
-
条件判断
- if-then : (if) ? (then)
- if-then-else : (if) ? (then) : (else)
- default : (value) ?: (defaultvalue)