FreeMarker 是一个模板引擎,主要用于生成动态内容,如 HTML、XML 或其他文本格式。它可以与多种后端技术结合使用,例如 Java、Spring Boot 等。在 Web 开发中,FreeMarker 可以用来生成动态网页内容。
FreeMarker 的工作原理是将模板文件(通常以 .ftl
结尾)与数据模型结合,生成最终的输出。模板文件包含了一些占位符,这些占位符会被数据模型中的实际值替换。
FreeMarker 的模板类型主要包括:
假设我们有一个简单的 Web 应用,使用 Spring Boot 和 FreeMarker 生成动态网页内容。我们需要在网页上显示当前的域名。
在 pom.xml
文件中添加 FreeMarker 和 Spring Boot 的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
在 application.properties
文件中配置 FreeMarker:
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.suffix=.ftl
在 src/main/resources/templates
目录下创建一个 index.ftl
文件:
<!DOCTYPE html>
<html>
<head>
<title>Domain Name Example</title>
</head>
<body>
<h1>Current Domain: ${domain}</h1>
</body>
</html>
创建一个控制器来处理请求并传递域名到模板:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HomeController {
@GetMapping("/")
public String index(Model model) {
String domain = "https://example.com"; // 这里可以动态获取域名
model.addAttribute("domain", domain);
return "index";
}
}
启动 Spring Boot 应用,访问 http://localhost:8080
,你将看到网页上显示当前的域名。
原因:可能是模板路径配置错误或模板文件不存在。
解决方法:
application.properties
中的 spring.freemarker.template-loader-path
配置正确。原因:可能是变量未正确传递到模板中。
解决方法:
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云