Spring Boot 使用 FreeMarker 渲染頁面

gary-liu發表於2017-05-30

Spring Boot提供了預設配置的模板引擎主要有以下幾種:

FreeMarker
Groovy
Thymeleaf
Mustache

Spring Boot 建議使用上面這些模板引擎,避免使用 JSP,若一定要使用 JSP 將無法實現 Spring Boot 的多種特性。

匯入 freemarker 依賴

在 pom.xml 檔案中新增如下依賴。

<!-- Spring Boot Freemarker 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

controller 檔案

使用 @Controller 而不是先前的 @RestController (restful api 形式,返回 json)方法返回值是 String 型別,和 Freemarker 檔名一致。這樣才會準確地把資料渲染到 ftl 檔案裡面進行展示。向 Model 加入資料,並指定在該資料在 Freemarker 取值指定的名稱,和傳統的 jsp 開發類似。

@Controller
@RequestMapping(value = "/user")
public class UserController {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getUser(Model model, @PathVariable("id") Long id) {
        User user = new User();
        user.setId(id);
        user.setName("liu");
        user.setAge(20);
        model.addAttribute("user", user);
        return "user";
    }

}

freemarker 檔案

新建 user.ftl 檔案,放到 resources/templates 目錄下。

<!DOCTYPE html>
<html>
<body>
id: ${user.id}
<br>
name: ${user.name}
<br>
age: ${user.age}
</body>
</html>

執行應用

啟動 web 應用,執行命令

mvn spring-boot:run

在瀏覽器上輸入 http://localhost:8080/user/1 可以看到返回結果

id: 1 
name: liu 
age: 20

專案示例:https://github.com/lzx2011/springBootPractice

相關文章