在以前所见到的信息显示发现都是以 Rest 风格进行显示,可是很明显在实际的开发之中,全部数据的显示最终都应该交由页 面完成,可是这个页面并非*.jsp 页面,而是普通的*.html 页面,并且最为重要的是,此处所使用的渲染的页面采用的是模版方式 的显示,而在 Java 开发行业,对于前台的显示模版常见的一共有三类技术:FreeMarker、Velocity、thymeleaf(推荐使用),因而下 面就利用 thymeleaf 实现一个简单的模版渲染操做。css
一、 若是要想在项目之中去使用 thymeleaf 模版,那么应该首先进行相关支持依赖库的导入,修改 pom.xml 配置文件:html
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
完整pomjava
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.mldn</groupId> <artifactId>microboot</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>microboot-advance</artifactId> <name>microboot-advance</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- 添加模板 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies> </project>
二、 本次的开发依然要经过一个控制层跳转到页面之中进行信息显示。在 SpringMVC 的时代使用的是 ModelAndView 传递,而现 在在 SpringBoot 里面若是要传递直接在方法中定义一个 Model 参数便可。web
package cn.mldn.microboot.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import cn.mldn.microboot.util.controller.AbstractBaseController; @Controller public class MessageController extends AbstractBaseController { @RequestMapping(value = "/show", method = RequestMethod.GET) public String show(String mid, Model model) { model.addAttribute("url", "www.study.cn"); // request属性传递包装 model.addAttribute("mid", mid); // request属性传递包装 return "message/message_show"; // 此处只返回一个路径, 该路径没有设置后缀,后缀默认是*.html } }
三、 如今的控制器之中使用的是“@Controller”注解,因此此时执行该控制器的方法后会进行跳转处理。若是如今要进行跳转 页面的定义,有严格要求:在CLASSPATH路径下(src/main/resources、src/main/view)必须创建有一个templates的目录,在这个目录里面保存有thymeleaf的全部相关页面,这些页面能够按照文件目录保存;spring
创建一个源代码目录:src/main/view;apache
而后项目上右键properties 进行设置提高为源代码目录app
四、 编写 message_show.html 页面(重要提示:该页面编写的时候全部的元素必定要完结)jsp
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模版渲染</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> </head> <body> <p th:text="'官方网站:' + ${url}"/> <p th:text="'用户名:' + ${mid}"/> </body> </html>
五、 运行服务,然后输入访问路径:http://localhost/show?mid=lgs;maven
六、 若是如今咱们所定义的要访问的页面不是经过控制器跳转的怎么办?那么为了解决这样的问题,能够考虑在 thymeleaf 所在的 父路径之中“src/main/view”创建一个 static 的子目录,该目录保存的是全部静态页面;spring-boot
在之后的实际开发之中,像 js、css、images 等信息文件都要求放在 static 目录里面。
七、 thymeleaf 默认的访问的页面路径的后缀为*.html,那么也能够经过修改 application.yml 配置文件进行变动:
spring: # 表示该配置直接为Spring容器负责处理 thymeleaf: suffix: .htm messages: # 表示进行资源配置 basename: i18n/Messages,i18n/Pages # 资源文件的名称 server: port: 80 # 此处设置的服务的访问端口配置
这个时候你须要修改“src/main/view/templates/message”下的 message_show.html 页面为 message_show.htm 才能够正常访问。