springboot 整合FreeMarker

FreeMarker是一个非常古老的模板引擎,可以用在Web环境或者非Web环境中。

与Thymeleaf不同,FreeMarker需要经过解析才能够在浏览器中展示出来。FreeMarker不仅可以用来配置HTML页面模板,也可以作为电子邮件模板、配置文件模板以及源码模板等。

Spring Boot中对FreeMarker整合也提供了很好的支持,主要整合步骤如下:

springboot 整合FreeMarker_第1张图片

1. 创建项目,添加依赖首先创建Spring Boot项目,然后添加spring-boot-starter-web和spring-boot-starter-freemarker依赖,代码如下:

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

配置FreeMarker

Spring Boot对FreeMarker也提供了自动化配置类FreeMarkerAutoConfiguration,相关的配置属性在FreeMarkerProperties中,从该默认配置中可以看到,FreeMarker默认模板位置和Thymeleaf一样,都在classpath:/templates/中,默认文件后缀是.ftl。

开发者可以在application.properties中对这些默认配置进行修改,部分常见配置如下:

#HttpservletRequest的属性是否可以覆盖contorller中的model的同名项
spring.freemarker.allow-request-override=false

#HttpSession的属性是否可以覆盖controller中的model的同名项
spring.freemarker.allow-session-override=false

#是否开启缓存
spring.freemarker.cache=false

#文件编码
spring.freemarker.charset=UTF-8

#是否检查模板位置
spring.freemarker.check-template-location=true

#ContentType的值
spring.freemarker.content-type=text/html

#是否将HttpServletRequest中的属性添加到Model中
spring.freemarker.expose-request-attributes=false

#是否将HttpSession中的属性添加到Model中
spring.freemarker.expose-session-attributes=false

#模板文件后缀
spring.freemarker.suffix=.ftl

#模板文件位置
spring.freemarker.template-loader-path=classpath:/templates/

server.port=8099

配置控制器

Product.java

package com.shrimpking.pojo;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Shrimpking
 * @create 2023/6/3 12:33
 */
public class Product
{
    private int id;
    private String name;
    private String factory;

    public Product()
    {
    }

    public Product(int id, String name, String factory)
    {
        this.id = id;
        this.name = name;
        this.factory = factory;
    }

    public int getId()
    {
        return id;
    }

    public void setId(int id)
    {
        this.id = id;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getFactory()
    {
        return factory;
    }

    public void setFactory(String factory)
    {
        this.factory = factory;
    }

    @Override
    public String toString()
    {
        return "Product{" + "id=" + id + ", name='" + name + '\'' + ", factory='" + factory + '\'' + '}';
    }
}

ProductController.java

package com.shrimpking.controller;

import com.shrimpking.pojo.Product;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Shrimpking
 * @create 2023/6/3 12:34
 */
@Controller
public class ProductController
{
    @GetMapping("/product")
    public ModelAndView product()
    {
        //新建列表
        List products = new ArrayList();
        //创建商品
        Product p1 = new Product();
        p1.setId(1);
        p1.setName("桂花糕");
        p1.setFactory("河南中裕食品厂");
        Product p2 = new Product(2,"椰树椰汁","海南椰树椰汁有限公司");
        products.add(p1);
        products.add(p2);
        //创建回传视图
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("products",products);
        //设置前端视图页面名称
        modelAndView.setViewName("product");
        return modelAndView;

    }
}

创建视图按照配置文件,在resources/templates目录下创建product.ftl文件,内容如下:




    
    freemarker


    
        <#if products ??&&(products?size>0)>
            <#list products as product>
                
商品编号 商品名称 商品生产方
${product.id} ${product.name} ${product.factory}

运行截图

springboot 整合FreeMarker_第2张图片

 springboot 整合FreeMarker_第3张图片

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