Freemarker模板引擎

模板引擎

1、什么是模板引擎

根据前边的数据模型分析,课程预览就是把课程的相关信息进行整合,在课程预览界面进行展示,课程预览界面与课程发布的课程详情界面一致,保证了教学机构人员发布前看到什么样,发布后也会看到什么样。

项目采用模板引擎技术实现课程预览界面。什么是模板引擎?

早期我们采用的jsp技术就是一种模板引擎技术,如下图:

Freemarker模板引擎_第1张图片

1、浏览器请求web服务器

2、服务器渲染页面,渲染的过程就是向jsp页面(模板)内填充数据(模型)。

3、服务器将渲染生成的页面返回给浏览器。

所以模板引擎就是:模板+数据=输出,Jsp页面就是模板,页面中嵌入的jsp标签就是数据,两者相结合输出html网页。

常用的java模板引擎还有哪些?

Jsp、Freemarker、Thymeleaf 、Velocity 等。

本项目采用Freemarker作为模板引擎技术。

Freemarker官方地址:http://freemarker.foofun.cn/

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker 是 免费的, 基于Apache许可证2.0版本发布。

2. Freemarker快速入门

下边在内容管理接口层搭建Freemarker的运行环境并进行测试。

在内容管理接口工层 添加Freemarker与SpringBoot的整合包

XML



    org.springframework.boot
    spring-boot-starter-freemarker

我下班是在nacos进行配置的,你们可以在本地进行配置

在nacos为内容管理接口层配置freemarker,新加一个freemarker-config-dev.yaml

Freemarker模板引擎_第2张图片

 

配置信息如下:

YAML
spring:
  freemarker:
    enabled: true
    cache: false   #
关闭模板缓存,方便测试
    settings:
      template_update_delay: 0
    suffix: .ftl   #页面模板后缀名
    charset: UTF-8
    template-loader-path: classpath:/templates/   #页面模板位置(默认为 classpath:/templates/)
    resources:
      add-mappings: false   #关闭项目中的静态资源映射(static、resources文件夹下的资源)
   

在内容管理接口工程添加freemarker-config-dev.yaml

Freemarker模板引擎_第3张图片

添加模板,在resources下创建templates目录,添加test.ftl模板文件

HTML




    
    Hello World!


Hello ${name}!

编写controller方法,准备模型数据

Java

package com.xuecheng.content.api;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @program: xuecheng-plus-project148
 * @description: freemarker测试
 * @author: Mr.Zhang
 * @create: 2023-03-07 09:55
 **/
@Controller  //因为freemarker返回页面不是json这里使用@Controller
public class FreemarkerController {

    @GetMapping("/testfreemarker")
    public ModelAndView test() {

        ModelAndView modelAndView = new ModelAndView();
        //设置模型数据
        modelAndView.addObject("name","小明");
        //设置视图的名称,就是模板文件的名称(去掉扩展名)
        modelAndView.setViewName("test");
        return modelAndView;
    }
}

启动内容管理接口工程,访问http://localhost:63040/content/testfreemarker

屏幕输出:Hello 小明!

Freemarker模板引擎_第4张图片

freemarker提供很多指令用于解析各种类型的数据模型,参考地址:http://freemarker.foofun.cn/ref_directives.html

你可能感兴趣的:(java,java,spring,boot,spring)