什么是FreeMarker

FreeMarker是一个 Java 的模板引擎,可以使用它来动态的绑定数据。比如我们在 JSP 中想要直接显示 Controller 传过来的数据的时候,那么我们就可以使用到 FreeMarker。

FreeMarker
FreeMarker

比如上图中的 ${name} 就是一个模板,这样的话前端不需要知道这个数据的具体逻辑,后端给就是了,页面的样式和数据之间分离出来,各过各的,挺好。

FreeMarker 还提供了一些指令,比如 if 判断,列表数据,循环等。我们的项目中到时候会用到。

FreeMarker与SpringMVC的整合

maven 依赖 freemarker

freemarker的maven依赖,最新版本如下

1
2
3
4
5
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>

支持集成常见的第三方库的依赖:

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

SpringMVC配置FreeMarker

1
2
3
4
5
6
7
8
9
<!--freemarker的配置在前,当当请求发现/WEB-INF/ftl/没有的时候,就会去/WEB-INF/jsp/查找-->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix" value=""/>
<property name="suffix" value=".ftl"/>
<property name="contentType" value="text/html; charset=UTF-8"/>
</bean>

Controller使用FreeMarker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
public class FreeMarkerTestController {

@RequestMapping("/hello")
public String SayHello(Model model){
model.addAttribute("name","wistbean");
return "hello";
}

@RequestMapping("/hi")
public String SayHi(Model model){
model.addAttribute("name","wistbean");
return "hi";
}
}

template使用

1
<h1>hello ${name}</h1>

SSM视频教程目录