一、SpringBoot 对静态资源的映射规则是什么?

Spring Boot 默认提供静态资源目录位置需置于 classpath 下,目录名需符合如下规则:

  • / static
  • / public
  • / resources
  • / META-INF / resources

例如:我们可以在 src / main / resources / 目录下创建 static 文件夹,在该位置放置一个图片文件。启动程序后,尝试访问 http://localhost:8080/A.jpg。如能显示图片,配置成功。

之前的基础 DEMO 都是通过 @RestController 来处理请求,所以返回的内容为 json 对象。那么如果需要 渲染 html 页面的时候,要如何实现呢?


二、模板引擎

概念: 模板引擎(这里特指用于 Web 开发的模板引擎)为了使用户界面与业务数据(内容)分离而产生,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的文档。

原理:本质是将模板文件和数据通过模板引擎生成最终的HTML代码(如图)

基本机理 :就是替换 (转换),将指定的标签转换为需要的业务数据;将指定的伪语句按照某种流程来变换输出。

为什么用 ThemeLeaf 模板引擎 ? SpringBoot 提供了 Thymeleaf 自动化配置解决方案;ThemeLeaf 本身语法简单、功能强大!


三、ThemeLeaf 基本使用

【1】引入 thymeleaf 启动器

<properties><thymeleaf.version>3.0.9.RELEASE</thymeleaf.version><!-- 布局功能的支持程序  thymeleaf3主程序  layout2以上版本 --><!-- thymele af2   layout1--><thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

也可以在快速创建 SpringBoot 项目那里,选 Template Engine —> ThemeLeaf


【2】编写模板文件

把HTML页面放在 classpath:/ templates /,thymeleaf 就能自动渲染;

(1) 导入 thymeleaf 的名称空间

在模板文件中,添加一下内容

<html lang="en" xmlns:th="http://www.thymeleaf.org">

(2) thymeleaf 语法

th:text :改变当前元素里面的文本内容;

th :任意 html 属性,来替换原生属性的值


${...}

变量表达式即 OGN L表达式或 Spring EL 表达式;

@Controller
public class HelloController {@RequestMapping("/")public String index(ModelMap map) {// 加入一个属性,用来在模板中读取map.addAttribute("host", "http://blog.didispace.com");// return模板文件的名称,对应src/main/resources/templates/index.htmlmap.addAttribute("list", userList);return "index";  }
}
<body><h1 th:text="${host}">Hello Themeleaf!</h1><table> <tr><td>编号</td><td>用户名</td><td>地址</td></tr><tr th:each="user : ${userList"}><td th:text = "${user.id}"></td><td th:text = "${user.name}"></td><td th:text = "${user.address}"></td></tr></table>
</body>


*{...}

选择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器 (map) 来执行。 *{Object.attribute}

<div th:object="${book}">  ...  <span th:text="*{title}">...</span>  ...
</div>

#{...}

消息表达式,(通常称为文本外部化,国际化或 (i18n) 允许从外部资源。 (如: .properties) 文件中检索特定于语言环境的消息,通过键来引用这引用消息。

<table>...<th th:text="#{header.address.city}">...</th><th th:text="#{header.address.country}">...</th>...
</table>

@{...}

URL表达式 指的是把一个有用的上下文或回话信息添加到 URL,这个过程经常被叫做 URL 重写。

<form th:action="@{/createOrder}">  <a href="main.html" th:href="@{/main}">

~{...}

片段表达式

【1. 1】Web开发 ------整合 ThemeLeaf相关推荐

  1. 浅谈PHP与Java之Web开发整合技术

      淺談PHP與Java之Web開發整合技術      鄭哲聖郑哲圣   前言 PHP為語法簡單的腳本語言,可以做為HTML的嵌入型語言,而且與Apache網頁伺服器搭配的設定容易.效能亦高. 前言 ...

  2. 大数据与web开发整合的最佳实践-思考

    数据体系 web接口 OLTP数据库 Restful接口 OLAP数据库 WebSocket接口

  3. spring boot 整合web开发之文件上传、静态资源访问、异常处理、返回JSON数据

    目录 springboot 整合web开发 返回json数据 静态资源访问 文件上传 全局异常 1.返回json数据 springboot默认的是jackson-databind做为json处理器.也 ...

  4. Spring整合web开发

    正常整合Servlet和Spring没有问题的 public class UserServlet extends HttpServlet {public void doGet(HttpServletR ...

  5. day38 19-Spring整合web开发

    整合Spring开发环境只需要引入spring-web-3.2.0.RELEASE.jar这个jar包就可以了,因为它已经帮我们做好了. Spring整合web开发,不用每次都加载Spring环境了. ...

  6. gin ip 和 本地访问的结果不一样_golang web开发——gin实战之整合swagger

    背景 如果我们之前搞过java web开发,我们应该都知道swagger这个API文档自动生成利器,有了swagger可以方便我们与客户端的联调,基本上是一目了然,swagger支持java,自然它也 ...

  7. 张利国java pdf_Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟张利国) PDF...

    资源名称:Java Web开发与实战–Eclipse+Tomcat+Servlet+JSP整合应用 (刘伟,张利国) PDF 第1章 web开发工具的安装与使用 第2章 web编程技术基础 第3章 s ...

  8. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  9. [Java Web整合开发王者归来·刘京华] 1、 Java Web开发

    目录: 1.Web技术简介 2.动态网站与静态网站 3.Java Web开发模式 4.JavaScript简介 1.Web技术简介 PS: 最近还有更凶残的技术,即整个操作系统都是基于Web的,如火狐 ...

最新文章

  1. IDEA如何导入多个maven依赖的项目
  2. 带你理清 Java 混乱的日志体系 - log4j、logback、log4j2、jcl、SLFJ 究竟是啥关系?
  3. 【经验分享】产品、运营人如何告别重复的数据分析工作?
  4. #2989. 数列(cdq分治/曼哈顿距离)
  5. MacBook 推出移动硬盘时总是提示有程序在使用它,如何解决?
  6. Java多线程 —— 线程状态迁移
  7. php输入数据提交排序,排序php数据var
  8. django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令
  9. 第一次网络渗透实验报告
  10. JS内功修炼-基础篇
  11. Linux下调整屏幕分辨率
  12. 星星之火-35:为什么傅里叶分析需要引入负频率以及负频率的物理意义是什么?
  13. linux icc编译器,icc编译器
  14. 在OpenCV里绘制直线、圆、中文等图形
  15. 财路网每日原创推送:一种基于区块链技术的新融资模式——STO
  16. 论文笔记:Neural Collaborative Filtering(NCF)
  17. Mesos的未来DCOS已经明朗化
  18. MATLAB/Simulink搭建电动助力转向模型
  19. Alertmanager 报警规则
  20. LearnOpenGL_study -- 光照贴图

热门文章

  1. 说说我的2015(做了一年多的程序媛)
  2. 程序员 很装逼的头注释
  3. uni-app 调用相机或相册图片并转为base64格式上传图片
  4. matlab基础知识加矩阵运算初步
  5. 图像二值化的阈值求法
  6. win10 删除旧系统windows文件夹,提示需要管理员权限,更改时无法枚举容器中的对象,访问被拒绝,怎么也删不了
  7. 不想被时代抛弃,千万别远离职场一线
  8. MySQL 的日期和时间函数
  9. 大学生软件课程设计之新生报到管理系统
  10. Java平台UC浏览器6.7发布啦