Java FTL 模板引入 CSS 的指南

在现代 Web 开发中,前端和后端的分离已经成为一种趋势。Java 后端通常使用 FreeMarker 模板引擎(FTL)来生成动态网页。当我们在 FTL 模板中引入 CSS 时,有几个关键的步骤需要注意。本文将带领大家了解如何在 Java FTL 模板中引入 CSS,并提供代码示例。

FTL 模板简介

FreeMarker 是一个基于 Java 的模板引擎,主要用于生成动态 HTML 内容。它允许我们在模板中使用变量、逻辑语句等,以便根据后端数据生成最终的网页。引入 CSS 的方式与静态 HTML 文件相似,通常在 <head> 标签中使用 <link> 标签。

如何引入 CSS

让我们来看一个简单的例子。在这个例子中,我们将创建一个基本的 FTL 模板,用于展示一个带有 CSS 样式的网页。

代码示例

以下是一个简单的 FTL 模板文件 index.ftl

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>${title}</title>
    
    <!-- 引入 CSS 文件 -->
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    欢迎来到我的网站
    <p>这是一个使用 FreeMarker 模板引擎的示例页面。</p>
    <p>当前时间:${currentTime}</p>
</body>
</html>

在这个模板中,我们定义了几个变量,包括 titlecurrentTime,并在网页的 <head> 部分通过 link 标签引入了 styles.css 文件。

CSS 文件示例

接下来,我们需要创建 styles.css 文件,以定义一些样式:

body {
    font-family: Arial, sans-serif;
    background-color: #f4f4f4;
    color: #333;
}

h1 {
    color: #1a73e8;
}

p {
    font-size: 1.2em;
}

这段 CSS 文件将为网页的背景、文字样式和标题颜色提供基本的样式设置。

后端数据传递

在 Java 后端中,我们需要设置必要的参数并将其传递给 FTL 模板。在 Spring 框架中,这通常在控制器中完成。

控制器代码示例

以下是一个 Java 控制器的示例代码:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Date;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home(Model model) {
        model.addAttribute("title", "我的网站");
        model.addAttribute("currentTime", new Date().toString());
        return "index"; // 返回模板名称
    }
}

在这个控制器中,我们使用 @GetMapping 注解来处理主页请求。我们将页面标题和当前时间添加到模型中,以便在 FTL 模板中使用。

关系图

在上面的过程中,后端控制器和 FreeMarker 模板之间的数据传递关系可以用下面的关系图表示:

erDiagram
  HomeController ||--o{ Model : creates
  Model ||--|{ Template : uses
  FreeMarkerTemplate ||--|| CSS : includes

总结

在本篇文章中,我们学习了如何在 Java FTL 模板中引入 CSS 文件。通过简单的代码示例,我们展示了 FTL 模板的基本结构,以及如何通过 Java 控制器将数据传递给模板。通过使用 FreeMarker,开发者可以轻松创建动态网页,并且能方便地引入 CSS 样式以优化用户体验。

无论您是在开始 Web 开发的旅程,还是希望在已有项目中改进前端展示,这个方法都将为您提供有用的参考。希望这篇文章能够帮助到您,让我们一同提高前端与后端的协作效率!