以下是一个简单的 Spring MVC 使用 FreeMarker 模板的示例。它包括项目的基本配置、控制器和 FreeMarker 模板的使用。
1. 依赖配置
首先,你需要在 pom.xml
文件中添加 Spring MVC 和 FreeMarker 的依赖。如果你使用的是 Maven 项目,添加以下依赖:
<dependencies>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.12</version>
</dependency>
<!-- FreeMarker -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
2. Spring MVC 配置
如果你使用的是 Spring Boot,FreeMarker 模板的默认配置通常是自动完成的。如果你使用的是非 Spring Boot 项目,需要手动配置 FreeMarkerConfigurer
和视图解析器:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
@Configuration
public class WebConfig {
// 配置 FreeMarker 视图解析器
@Bean
public ViewResolver freemarkerViewResolver() {
FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
resolver.setCache(true);
resolver.setPrefix("");
resolver.setSuffix(".ftl");
return resolver;
}
// 配置 FreeMarker
@Bean
public FreeMarkerConfigurer freemarkerConfigurer() {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("/WEB-INF/views/");
return configurer;
}
}
3. 控制器
定义一个简单的控制器,将数据传递给 FreeMarker 模板并渲染视图:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, FreeMarker!");
return "hello";
}
}
4. FreeMarker 模板
在 src/main/resources/templates/
或者根据你的 FreeMarkerConfigurer
配置路径下创建一个 hello.ftl
文件。例如:
/WEB-INF/views/hello.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello FreeMarker</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
5. 运行与测试
启动 Spring 项目后,访问 http://localhost:8080/hello
,你应该能够看到以下页面:
Hello, FreeMarker!
6. 总结
FreeMarkerConfigurer
用于配置 FreeMarker 模板加载器的路径。FreeMarkerViewResolver
用于将视图名称(如hello
)解析为 FreeMarker 模板文件(如hello.ftl
)。- 在控制器中通过
Model
传递数据到 FreeMarker 模板,模板中使用${}
表达式显示数据。
通过这种方式,Spring MVC 项目可以非常轻松地集成 FreeMarker 模板引擎,实现动态 HTML 页面渲染。