在Spring boot中有一个很重要的概念,叫做约定优于配置——软件开发的简约原则。所以Spring boot会按照约定好的文件位置去找我们的包和类。

默认配置

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

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

举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件。启动程序后,

尝试访问http://localhost:8080/test.jpg。如能显示图片,配置成功。

渲染Web页面

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

模板引擎

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

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

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性。

当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates

主页面

我们可以先写一个主页面,然后再里面给他分配几个模板页面;

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Insert title here</title>
  6. </head>
  7. <body>
  8. <H1><a href="thymeleaf">Thymeleaf</a></H1>
  9. <H1><a href="freeMarker">FreeMarker</a></H1>
  10. <H1><a href="velocity">Velocity</a></H1>
  11. <H1><a href="groovy">Groovy</a></H1>
  12. <H1><a href="mustache">Mustache</a></H1>
  13. </body>
  14. </html>

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(文档对象模型)上执行预先制定好的逻辑。

编写HTML代码,我们把HTML放入到

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1><a th:href="${host}">Hello Boot Thymeleaf</a></h1>
  9. </body>
  10. </html>

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

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

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>

在完成配置之后,举一个简单的例子,在快速入门工程的基础上,举一个简单的示例来通过Thymeleaf渲染一个页面。

  1. @RequestMapping("thymeleaf")
  2. public String thymeleaf(ModelMap map) {
  3. map.addAttribute("host", "http://blog.csdn.net/liaodehong");
  4. return "thymeleaf/index";
  5. }

FreeMarker

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据,   并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。       它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

这里我们把FreeMarker,Velocity,Groovy都引入进来,这里教大家一个简单办法。对准项目的pom文件,点击右键,选择edit spring。

编写模板文件index.ftl;

编写一个index.ftl文件,此文件的路径在src/main/resources/templates/freeMarker下,其中index.ftl文件的内容如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1>Hello Boot ${content}</h1>
  9. </body>
  10. </html>

Controller如下

  1. @Controller
  2. public class HelloController {
  3. @RequestMapping("/")
  4. public String index() {
  5. return "index";
  6. }
  7. @RequestMapping("thymeleaf")
  8. public String thymeleaf(ModelMap map) {
  9. map.addAttribute("host", "http://blog.csdn.net/liaodehong");
  10. return "thymeleaf/index";
  11. }
  12. @RequestMapping("freeMarker")
  13. public String framework(ModelMap map) {
  14. map.addAttribute("content", "freeMarker");
  15. return "freeMarker/index";
  16. }
  17. }

Velocity

Velocity 是一种 Java 模版引擎技术,该项目由 Apache 提出,由另外一种引擎技术 Webmacro 引深而来。那什么是官方的 Velocity 定义呢? Apache 对它的定义是:一种基于 Java 的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在 Java 代码中的对象。目前最新的版本是 1.4 ,可以在 http://jakarta.apache.org/velocity/index.html 查找更多信息。

其实这几个模板都大同小异,Controller层基本不需要怎么变化,唯一需要变化只是模板的显示方式而已。

Velocity的支持已经移除,导致视图一直报错,之前知道Spring4.3废弃了Velocity,@deprecated as of spring 4.3, in favor of FreeMarker,所以以为Springboot也只是deprecated ,谁曾想居然remove掉了。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.5-Release-Notes

Classes, methods and properties that were deprecated in Spring Boot 1.4 have been removed in this release. Please ensure that you aren’t calling deprecated methods before upgrading. In particular, the HornetQ and Velocity support have been removed.

资源下载页:http://download.csdn.net/detail/liaodehong/9921032

spring boot 教程(二)模板依赖相关推荐

  1. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

  2. 超详细的Spring Boot教程,搞定面试官!

    前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...

  3. Spring Boot(二)应用实例

    Spring Boot(二) 一 . Spring Boot Web 应用实例 这是一个Spring Boot web应用程序示例,使用嵌入式Tomcat + JSP模板,并将包作为可执行文件WAR文 ...

  4. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  5. Spring Boot教程(十六):Spring Boot集成shiro

    Apache Shiro™是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理.借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到 ...

  6. Spring Boot (二)集成Mybatis、Druid

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot (二)集成Mybatis.Druid,标记地址: https ...

  7. 重拾后端之Spring Boot(二):MongoDB的无缝集成

    重拾后端之Spring Boot(一):REST API的搭建可以这样简单 重拾后端之Spring Boot(二):MongoDb的无缝集成 重拾后端之Spring Boot(三):找回熟悉的Cont ...

  8. Spring Boot教程系列(ImportNew )

    ImportNew Spring Boot教程系列 SpringBoot (一) :入门篇--http://mp.weixin.qq.com/s/hAJmvrYfS6OehMYVgqpqkw Spri ...

  9. Spring Boot教程系列 ImportNew

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Impo ...

  10. ImportNew Spring Boot教程系列

    ImportNew Spring Boot教程系列 SpringBoot (一) :入门篇--http://mp.weixin.qq.com/s/hAJmvrYfS6OehMYVgqpqkw Spri ...

最新文章

  1. 将request中的所有参数存放到自定义的map中
  2. Ubentu编译Android源码(AOSP)
  3. nginx的一次安装与配置
  4. A星算法(VC版源码)
  5. MySQL-InnoDB引擎
  6. html5获取域对象,entity-framework – EF5如何获取域对象的导航属性列表
  7. linux打开服务iis,如何在Linux中引导时列出启动服务?
  8. LOJ#6282. 数列分块入门 6
  9. oracle错误27101,ORA-27101ORA-01034错误解决
  10. 解读Android 4.0 Camera原生应用程序的设计思路
  11. Python 中的解析命令行参数
  12. 【python|opencv】读取/保存图片,路径含有中文问题解放方案(opencv 无法读取/保存图片)
  13. 定时重启群晖 SurveillanceStation NVR服务
  14. TP-LINK三层网管交换机通过console接口完成复位操作
  15. Python的模块和包管理
  16. nodejs前端+后端
  17. VRCHAT模型上传常见问题汇总
  18. python sed awk_观点|awk sed ,一个老派系统管理员的基本素养
  19. Java开发自学教程!kafka配置文件参数说明
  20. Excel建立股票资产定价模型,寻找最佳投资组合

热门文章

  1. 迷宫~哈哈~终于懂了BFS
  2. 介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……...
  3. 【Python】matplotlib.pyplot 常用技巧
  4. hadoop漏洞_【漏洞公告】CVE-2017-7669:Apache Hadoop远程权限提升漏洞
  5. python爬虫利器p_Python:网络爬虫相当利器
  6. Ubuntu18.04上AS运行模拟器报错:/dev/kvm device: permission denied
  7. Android在Android.mk里添加TAG
  8. 高通平台手机开发之Bring-up
  9. java long类型报错:error: integer number too large
  10. J2EE技术-Spring轻量级框架