这里有新鲜出炉的精品教程, 程序狗速度看过来!
Spring Boot
Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务你可通过它来选择不同的 Spring 平台可创建独立的 Java 应用和 web 应用, 同时提供了命令行工具来允许'spring scripts'.
本篇文章主要介绍了 Spring Boot 使用模板 freemarker 的示例代码, 小编觉得挺不错的, 现在分享给大家, 也给大家做个参考一起跟随小编过来看看吧
最近有好久没有更新博客了, 感谢小伙伴的默默支持, 不知道是谁又打赏了我一个小红包, 谢谢
今天我们讲讲怎么在 Spring Boot 中使用模板引擎 freemarker, 先看看今天的大纲:
(1) freemarker 介绍;
(2) 新建 spring-boot-freemarker 工程;
(3) 在 pom.xml 引入相关依赖;
(4) 编写启动类;
(5) 编写模板文件 hello.ftl;
(6) 编写访问类 HelloController;
(7) 测试;
(8) freemarker 配置;
(9) freemarker 常用语法;
(10) freemarker layout 布局
(1) freemarker 介绍;
FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本 (html 网页电子邮件配置文件源代码等) 的通用工具 它不是面向最终用户的, 而是一个 Java 类库, 是一款程序员可以嵌入他们所开发产品的组件
(2) 新建 spring-boot-freeMarker 工程;
我们新建一个 maven 工程, 取名为: spring-boot-freemarker
(3) 在 pom.xml 引入相关依赖;
这里使用 freeMarker 需要引入相关依赖包: spring-boot-starter-freemarker,
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.kfit</groupId>
- <artifactId>spring-boot-velocity</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>spring-boot-velocity</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <!-- jdk 版本号, angel 在这里使用 1.8, 大家修改为大家本地配置的 jdk 版本号即可 -->
- <java.version>1.8</java.version>
- </properties>
- <!--
- spring boot 父节点依赖,
- 引入这个之后相关的引入就不需要添加 version 配置,
- spring boot 会自动选择最合适的版本进行添加
- -->
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.4.1.RELEASE</version><!-- 1.4.1.RELEASE , 1.3.3.RELEASE-->
- </parent>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <!-- spring boot web 支持: mvc,aop... -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <!-- 引入 freeMarker 的依赖包. -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-freemarker</artifactId>
- </dependency>
- </dependencies>
- </project>
(4) 编写启动类;
启动类没有什么特别之处, 不过多介绍, 请看代码:
- package com.kfit;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- /**
- *
- * @author Angel -- 守护天使
- * @version v.0.1
- * @date 2016 年 10 月 4 日
- */
- @SpringBootApplication
- public class App {
- publicstaticvoid main(String[] args) {
- SpringApplication.run(App.class, args);
- }
- }
(5) 编写模板文件 hello.ftl;
编写一个 hello.ftl 文件, 此文件的路径在 src/main/resources/templates 下, 其中 hello.ftl 文件的内容如下:
- <html>
- <body>
- welcome ${name} to freemarker!
- </body>
- </html>
(6) 编写访问类 HelloController;
有了模板文件之后, 我们需要有个 Controller 控制类, 能够访问到 hello.ftl 文件, 这里也很简单, 具体看如下代码:
- package com.kfit.demo.web;
- import java.util.Map;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- /**
- * 测试 velocity;
- * @author Angel -- 守护天使
- * @version v.0.1
- * @date 2016 年 10 月 4 日
- */
- @Controller
- public class HelloController {
- @RequestMapping("/hello")
- public String hello(Map<String,Object> map){
- map.put("name", "[Angel -- 守护天使]");
- return "hello";
- }
- }
(7) 测试;
好了, 到这里, 我们就可以启动我们的程序进行测试了, 访问地址:
http://127.0.0.1:8080/hello , 如果你在浏览器中看到如下信息:
welcome [Angel -- 守护天使] to freemarker!
那么说明你的 demo ok 了
(8) freemarker 配置;
在 spring boot 的 application.properties 属性文件中为 freemarker 提供了一些常用的配置, 如下:
- ########################################################
- ###FREEMARKER (FreeMarkerAutoConfiguration)
- ########################################################
- spring.freemarker.allow-request-override=false
- spring.freemarker.cache=true
- spring.freemarker.check-template-location=true
- spring.freemarker.charset=UTF-8
- spring.freemarker.content-type=text/html
- spring.freemarker.expose-request-attributes=false
- spring.freemarker.expose-session-attributes=false
- spring.freemarker.expose-spring-macro-helpers=false
- #spring.freemarker.prefix=
- #spring.freemarker.request-context-attribute=
- #spring.freemarker.settings.*=
- #spring.freemarker.suffix=.ftl
- #spring.freemarker.template-loader-path=classpath:/templates/ #comma-separated list
- #spring.freemarker.view-names= # whitelist of view names that can be resolved
(9) freemarker 常用语法;
freemarker 的语法并不是本节的重点, 这里还是简单的介绍下几个常用的 if else,list;
首先我们改造下 HelloController 的 hello 方法
- @RequestMapping("/hello")
- public String hello(Map<String,Object> map){
- map.put("name", "[Angel -- 守护天使]");
- map.put("gender",1);//gender: 性别, 1: 男; 0: 女;
- List<Map<String,Object>> friends =new ArrayList<Map<String,Object>>();
- Map<String,Object> friend = new HashMap<String,Object>();
- friend.put("name", "张三");
- friend.put("age", 20);
- friends.add(friend);
- friend = new HashMap<String,Object>();
- friend.put("name", "李四");
- friend.put("age", 22);
- friends.add(friend);
- map.put("friends", friends);
- return "hello";
- }
这里我们返回了 gender 和 friends 的列表;
接下来我们看看怎么在 freemarker 进行展示呢?
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <p>
- welcome ${name} to freemarker!
- </p>
<p > 性别:
<#if gender==0>
女
<#elseif gender==1>
男
<#else>
保密
- </#if>
- </p>
- <h4 > 我的好友:</h4>
- <#list friends as item>
姓名:${item.name} , 年龄 ${item.age}
- <br>
- </#list>
- </body>
- </html>
- (10) freemarker layout
freemarker layout 主要处理具有相同内容的页面, 比如每个网站的 header 和 footer 页面
freemarker 的布局主要常见的两种方式是 #import(文件路径)和 #include(文件路径), 其中 import 和 include 的区别在于, include 常用于公共部分的页面, 如果要使用 <#assign username = 张三> 涉及到内部函数以及变量声明之类的, 使用 import 进行导入, 如果在 import 中的页面含有页面当前将不会进行渲染 我们编写一个 header 和 footer, 其中的 header 使用 include 引入, footer 页面也使用 include 引入(当然 freemarker 还有别的布局方式, 这里只是介绍一种, 请自行学习研究)
header.ftl 内容:
- <header>
- This is a header,welcome ${name} to my web site!
- </header>
- <hr>
footer.ftl 内容:
- <hr>
- <footer>
- This is a footer,welcome ${name} to my web site!
- </footer>
修改 hello.ftl:
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <#include "/header.ftl">
- <p>
- welcome ${name} to freemarker!
- </p>
<p > 性别:
<#if gender==0>
女
<#elseif gender==1>
男
<#else>
保密
- </#if>
- </p>
- <h4 > 我的好友:</h4>
- <#list friends as item>
姓名:${item.name} , 年龄 ${item.age}
- <br>
- </#list>
- <#include "/footer.ftl">
- </body>
- </html>
到这里就 ok 了, 我们访问 / hello 页面, 应该会看到如下图的效果:
来源: http://www.phperz.com/article/18/0315/353159.html