静态资源访问

在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。

默认配置

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

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

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

渲染Web页面

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

模板引擎

在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。

Spring Boot提供了默认配置的模板引擎主要有以下几种:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置

当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。

Thymeleaf

Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。

示例模板:

<table>
<thead>
<tr>
<th th:text="#{msgs.headers.name}">Name</td>
<th th:text="#{msgs.headers.price}">Price</td>
</tr>
</thead>
<tbody>
<tr th:each="prod : ${allProducts}">
<td th:text="${prod.name}">Oranges</td>
<td th:text="${#numbers.formatDecimal(prod.price,1,2)}">0.99</td>
</tr>
</tbody>
</table>

  

可以看到Thymeleaf主要以属性的方式加入到html标签中,浏览器在解析html时,当检查到没有的属性时候会忽略,所以Thymeleaf的模板可以通过浏览器直接打开展现,这样非常有利于前后端的分离。

在Spring Boot中使用Thymeleaf,只需要引入下面依赖,并在默认的模板路径src/main/resources/templates下编写模板文件即可完成。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

  

源码来源

最新文章

  1. dvb标准
  2. Devexpress Winform Gridcontrol 中根据条件单元格的值改变单元格的颜色等属性。
  3. 【BZOJ-1853&amp;2393】幸运数字&amp;Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
  4. 最近面试的题目(WEB、Service、SQL、JavaScript)
  5. [转]c#截取指定长度的字符串
  6. 暑假集训单切赛第一场 POJ 2309 BST(找规律的题)
  7. UVA 11300 Spreading the Wealth
  8. response 返回 带双引号 的字符串解决办法 springmvc
  9. php简陋版实现微信公众号主动推送消息
  10. Hdu 5001 Walk 概率dp
  11. MAX函数和GROUP BY 语句一起使用的一个误区
  12. iOS-iPhone系统版本号-iPhone App版本号
  13. iOS----------关于Cornerstone的偏好设置
  14. [模板] 数位dp
  15. django的CBV设计模式
  16. openwrt添加自动启动项
  17. NLP入门(四)命名实体识别(NER)
  18. HDU6216
  19. Python数据类型之dict和set
  20. [转帖]2019 简易Web开发指南

热门文章

  1. CSP-S 2019游记
  2. Bug快到碗里来
  3. Exchange 2010的部署
  4. 出大问题!webpack 多入口&amp;&amp;html模板在后端
  5. redis之使用场景
  6. git和svn 及git使用&amp;解决上线冲突
  7. EF6
  8. python程序超时处理 timeout_decorator
  9. centos7安装部署jumpserver
  10. java高并发核心要点|系列1|开篇