Spring Boot 整合 Velocity 模板引擎

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/smartbetter/article/details/73441323

Velocity 是一个基于 Java 的模板引擎,它可以使用简单但功能强大的模板语言来引用 Java 代码中定义的对象。除此之外,Velocity 还可用于从模板生成 SQL、PostScript 和 XML,既可以用作生成源代码和报告的独立实用程序,也可以用作其他系统的集成组件。

使用 Velocity 需要添加 Maven 起步依赖(Velocity 模版页面需要放在 resources/templates 下):

<!-- velocity -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>velocity-spring-boot-starter</artifactId>
    <version>1.0.4.RELEASE</version>
</dependency>

然后通过 application.properties 中的 spring.velocity.* 前缀配置属性:

# velocity
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm

并新建配置的 layout 文件 (resources/templates/default.vm):

$screen_content

layout 配置的含义是,如果你在处理某个请求时返回了 detail.vm 模板,那么最终返回的页面将会是:将 detail.vm 模板的内容填充 layout 页面的 $screen_content 占位符的内容,然后再将整个填充后的页面返回给用户。

1.渲染静态页面

新建页面模板 resources/templates/detail.vm(依据 Velocity 语法编写):

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="renderer" content="webkit|ie-comp|ie-stand">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <!-- 1、变量表达式 -->
    <!-- "$" 用来标识一个对象(或理解为变量), "!" 用来强制把不存在的变量显示为空白 -->
    <title>$!title</title>
</head>
<body>
    <!-- 2、字符串替换 -->
    <span>Welcome to our application, $!student.name!</span>

    <!-- 3、运算符:+ - * / %  逻辑运算符:== && || ! -->
    <!-- "#" 用来标识 Velocity 的脚本语句, 包括
##    #set、#if 、#else、#end、#foreach、#end、#include("模板文件名")、#parse("模板文件名")、#macro
    等 -->
    <!-- "{}" 用来明确标识 Velocity 变量 -->
    #set($isEven=${count} % 2 == 0)
    <span>$!isEven</span>

    <!-- 4、条件语句 -->
    <div>
        #if($!student.name == "zhangsan")
            <span>User is an student</span>
        #elseif($!student.name == "lisi")
            <span>User is a manager</span>
        #else
            <span>User is some other thing</span>
        #end
    </div>

    <!-- 5、遍历 -->
    #foreach($student in $persons)
    <tr>
        <td>$!student.id</td>
        <td>$!student.name</td>
    </tr>
    #end
</body>
</html>

然后编写 Java 代码,在浏览器中渲染该静态页面:

@Controller
public class ArticleController {
    @RequestMapping("/article/detail/{id}")
    public String articleDetailRequest(HttpServletRequest request, HttpServletResponse response, Model model, 
                                       @PathVariable("id") Long id) {
        model.addAttribute("title", "detail");
        model.addAttribute("student", new Student(1L,"zhangsan"));
        model.addAttribute("count", 100);
        List<Student> persons = new ArrayList<>();
        persons.add(new Student(2L, "lisi"));
        persons.add(new Student(3L, "wangwu"));
        model.addAttribute("persons", persons);
        return "detail";
    }
}
public class Student {
    private Long id;
    private String name;
    public Student(Long id, String name) {
        this.id = id;
        this.name = name;
    }
}

运行项目,浏览器访问 http://localhost:8080/article/detail/1 即可渲染出静态页面。

展开阅读全文

没有更多推荐了,返回首页