本文以上一篇文章“
深入学习spring-boot系列(二)--使用spring-data-jpa
”为原型,将里面的所有JSP页面更改成thymeleaf模板。
本文记录一下几点:
一、资源文件的约定目录结构
二、Maven配置
三、开发时修改thymeleaf模板自动重新加载配置
四、thymeleaf常用基础知识点
一、资源文件的约定目录结构
在“
深入学习spring-boot系列(二)--使用spring-data-jpa“一文中,只介绍了spring-boot项目源码目录结构的约定,现在继续介绍资源文件的约定目录结构
Maven的资源文件目录:/src/java/resources
spring-boot项目静态文件目录:/src/java/resources/static
spring-boot项目模板文件目录:/src/java/resources/templates
spring-boot静态首页的支持,即index.html放在以下目录结构会直接映射到应用的根目录下:
classpath:/META-INF/resources/index.html
classpath:/resources/index.html
classpath:/static/index.html
calsspath:/public/index.html
而上一篇文章“
深入学习spring-boot系列(二)--使用spring-data-jpa“中使用的标准maven目录/src/java/webapp目录没有了,将之前的jsp页面全部使用thymeleaf模板重新实现,并将它们放置在/src/java/resources/templates目录下。
而由于使用thymeleaf的html5模板,所以我将index.html模板文件直接放到了/src/java/resources/templates目录下。然而这个目录并不是首页文件的默认目录,所以我们需要手动将应用根路径映射到/src/java/resources/templates/index.html下。这个在spring-mvc的Controller下映射一下就可以了。
@RequestMapping("/")
public String index(){
return "index";
}
在spring-boot下,默认约定了Controller试图跳转中thymeleaf模板文件的的前缀prefix是”classpath:/templates/”,后缀suffix是”.html”
这个在application.properties配置文件中是可以修改的。
如下配置可以修改试图跳转的前缀和后缀
spring.thymeleaf.prefix: /templates/
spring.thymeleaf.suffix: .html
更过有关thymeleaf中的默认这是可以查看org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties这个类的属性
看看当前的目录结构如下:
二、Maven配置
在pom.xml中加入如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
原来关于spring-boot-starter-web等的依赖就可以去掉了,因为spring-boot-starter-thymeleaf是包含这些依赖的。而关于jsp的依赖也可以去掉了,因为我们已经完全抛弃jsp了。
三、开发时修改thymeleaf模板自动重新加载配置
Spring-boot使用thymeleaf时默认是有缓存的,即你把一个页面代码改了不会刷新页面的效果,你必须重新运行spring-boot的main()方法才能看到页面更改的效果。我们可以把thymeleaf的缓存关掉,用于支持页面修改后重新发布到spring-boot内嵌的tomcat中去。在application.properties配置文件中加入以下配置。
# Allow Thymeleaf templates to be reloaded at dev time
spring.thymeleaf.cache: false
server.tomcat.access_log_enabled: true
server.tomcat.basedir: target/tomcat
四、thymeleaf常用基础知识点
1、在html页面中引入thymeleaf命名空间,即<html xmlns:th=http://www.thymeleaf.org></html>,此时在html模板文件中动态的属性使用th:命名空间修饰
2、引用静态资源文件,比如CSS和JS文件,语法格式为“@{}”,如@{/js/blog/blog.js}会引入/static目录下的/js/blog/blog.js文件
3、访问spring-mvc中model的属性,语法格式为“${}”,如${user.id}可以获取model里的user对象的id属性
4、循环,在html的标签中,加入th:each=“value:${list}”形式的属性,如<span th:each=”user:${users}”></span>可以迭代users的数据
5、判断,在html标签中,加入th:if=”表达式”可以根据条件显示html元素
<span th:if="${not #lists.isEmpty(blog.publishTime)}">
<span id="publishtime" th:text="${#dates.format(blog.publishTime, 'yyyy-MM-dd HH:mm:ss')}"></span>
</span>
以上代码表示若blog.publishTime时间不为空,则显示时间
6、时间的格式化,
${#dates.format(blog.publishTime,'yyyy-MM-dd HH:mm:ss')}
表示将时间格式化为”yyyy-MM-dd HH:mm:ss”格式化写法与Java格式化Date的写法是一致的。
7、字符串拼接,有两种形式
比如拼接这样一个URL:/blog/delete/{blogId}
第一种:th:href="'/blog/delete/' + ${blog.id }"
第二种:th:href="${'/blog/delete/' + blog.id }"
更详细的代码请参考我的Github项目Jisonami的0.1.2:
https://github.com/jisonami/Jisonami2/tree/0.1.2
- 大小: 18.1 KB
分享到:
相关推荐
spring boot demo是一个用于深度学习并实战spring boot的项目,目前总共包含66一个集成demo,已经完成了55一个。 该项目已成功集成actuator( 监控)、admin( 可视化监控)、logback( 日志)、aopLog( 通过AOP记录web...
基于Java和SpringBoot的教务管理系统、学生管理系统、课表查询系统 (Spring、SpringBoot、thymeleaf) 后端使用Maven 进行包管理,使用spring-boot框架、模板引擎使用thymeleaf、web模块使用springMVC、数据库….zip ...
该项目的技术架构采用了Spring Boot框架进行开发,前端页面使用了Thymeleaf模板引擎进行渲染,通过Bootstrap进行页面布局和样式设计。数据库采用了MySQL进行数据存储,使用了MyBatis框架进行数据访问层的开发。同时...
该系统基于Spring Boot框架开发,采用Maven管理项目,集成了Spring MVC框架实现前后端分离,使用Thymeleaf模板引擎实现页面动态渲染。同时,使用Spring Security框架实现权限控制,确保管理员对系统的安全管理。项目...
通过该项目的学习和实践,开发人员可以深入了解Spring Boot框架的应用,提升自己的技术水平。总之,该项目资源是一个非常有价值的Spring Boot医疗服务系统项目,具有明显的实用性和学习参考价值,对于医疗信息管理...
该系统不仅可以作为毕业设计项目的选题,也可以作为学习Spring Boot框架和Web应用开发的实践项目,对于想要深入学习和实践Java Web开发的同学们来说,是一个很好的参考资源。该毕业设计项目的完整源码+说明已经打包...
前端页面使用了Thymeleaf模板引擎,实现了动态页面渲染,呈现出良好的用户体验。系统功能包括党组织管理,可以对各级党组织信息进行管理,包括组织机构、党员信息等;党员信息管理,可以实现党员信息的录入、修改、...
系统采用了Spring Boot框架,通过Maven进行项目管理,数据库采用MySQL,前端页面采用Thymeleaf模板引擎和Bootstrap框架进行开发,实现了页面的美观和交互性。项目中采用了Spring Security进行安全认证,保障用户信息...
通过该项目的学习和实践,开发者可以深入了解Spring Boot框架的应用,以及项目开发和管理的流程和方法,对于提升开发能力和实践经验都具有很大的帮助。同时,该项目还可以作为毕业设计或课程设计的参考和实践项目,...
本系统使用了 Spring Boot 框架、Thymeleaf 模板引擎、Redis 缓存技术和 MySQL 数据库。在系统实现过程中,我们采用了现代化的开发工具和环境,使得系统具有高性能、高可靠性和易用性等特点。通过本次论文的设计和...