Spring Boot集成freemaker快速入门demo

server/2024/10/15 20:23:55/

1.什么是freemaker?

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

FreeMarker原理

FreeMarker是一个基 于Java的开发包和类库的一种将模板和数据进行整合并输出文本的通用工具,FreeMarker实现页面静态化的原理是:将页面中所需要的样式写入到 FreeMarker模板文件中,然后将页面所需要的数据进行动态绑定并放入到Map中,然后通过FreeMarker的模板解析类process()方 法完成静态页面的生成。其工作原理如图2-1所示。  

11

模板 +  数据模型 = 输出

2.代码工程

实验目标:实现freemaker展现后台变量

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>freemaker</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency></dependencies>
</project>

config

设置一个共享变量app

package com.et.freemaker.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;import freemarker.template.TemplateModelException;import javax.annotation.PostConstruct;@Configuration
public class FreemarkerConfiguration {//Configuration@Autowiredprivate freemarker.template.Configuration configuration;@PostConstructpublic void configuration() throws TemplateModelException {// add globe variablethis.configuration.setSharedVariable("app", "Spring Boot");}
}

controller

设置一个title变量

package com.et.freemaker.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;import java.util.HashMap;
import java.util.Map;@RestController
public class HelloWorldController {@RequestMapping("/hello")public Map<String, Object> showHelloWorld(){Map<String, Object> map = new HashMap<>();map.put("msg", "HelloWorld");return map;}@GetMapping("/")public ModelAndView index () {ModelAndView modelAndView = new ModelAndView("index/index");// add title to ModelmodelAndView.addObject("title", "Freemarker");return modelAndView;}
}

模版

放在resource/templates/index下面

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Freemarker</title></head><body>Hello ${title}!${app}</body>
</html>

application.yaml

server:port: 8088
spring:freemarker:enabled: truecache: false# Content Typecontent-type: text/htmlcharset: utf-8suffix: .ftlrequest-context-attribute: requestexpose-request-attributes: falseexpose-session-attributes: falseallow-request-override: trueallow-session-override: trueexpose-spring-macro-helpers: truecheck-template-location: trueprefer-file-system-access: truetemplate-loader-path:- classpath:/templates/settings:datetime_format: yyyy-MM-dd HH:mm:ss      template_update_delay: 30m               default_encoding: utf-8

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • GitHub - Harries/springboot-demo: a simple springboot demo with some components for example: redis,solr,rockmq and so on.

3.测试

启动springboot应用

访问首页

http://127.0.0.1:8088/,返回内容

Hello Freemarker!Spring Boot

4.引用

  • FreeMarker :: Spring Framework
  • Spring Boot集成freemaker快速入门demo | Harries Blog™

http://www.ppmy.cn/server/46044.html

相关文章

安装Android Studio

下载android studio 官网下载: https://developer.android.google.cn/studio/ 百度网盘: https://pan.baidu.com/s/1YuO_wXL3EA6vYwP2srqUDQ?pwd773x 提取码: 773x 安装 左侧的licenses都选上Accept 这一步要比较久的时间&#xff0c;耐心等待 修改Sdk的位置&#xff08;…

JavaWeb ServletContext 对象 应用

ServletContext: ServletContext是Java EE Servlet 定义的一个让 Web 应用中的 Servlet 能够和服务器交流的一个接口&#xff0c;每个应用都有自己的 ServletContext&#xff0c;除了分布式应用中的每个服务器实例的 ServletContext 是独立的&#xff0c;不能用来共享数据外 Se…

STMF1学习笔记(八)—DMA方式多通道采集

1、初始化 2、DMA设置 3、业务代码—DMA方式 一、 在 main 函数前面添加变量。其中 ADC_Value 作为转换数据缓存数组&#xff0c;ad1,ad2 存 储 PA0( 转换通道 0),PA1( 转换通道 1) 的电压值。 /* USER CODE BEGIN PV */ /* Private variables */ uint32_t ADC_Value[…

代码随想录训练营Day54:Leetcode392、115

Leetcode392&#xff1a; 问题描述&#xff1a; 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"…

辅助科技照亮道路,携手共促盲文书写技能新飞跃

在这个科技日新月异的时代&#xff0c;创新的力量正以前所未有的方式融入我们的日常生活&#xff0c;特别是对于视觉障碍群体而言&#xff0c;技术的每一次进步都是通往更加独立生活的桥梁。今天&#xff0c;让我们聚焦于一款名为“蝙蝠避障”的辅助软件&#xff0c;它不仅为盲…

一些常见的 Conda 命令

Conda 是一个用于包管理和环境管理的开源软件包&#xff0c;特别是用于Python环境。以下是一些常见的 Conda 命令&#xff1a; 创建环境&#xff1a; conda create --name myenv # 创建一个名为 myenv 的新环境 conda create --name myenv python3.8 # 创建一个指定 Python 版本…

射频功率限幅器简略

在功率输入保护方面&#xff0c;限幅器是最好用的器件之一&#xff0c;可以保护后级电路不受超限功率的损害&#xff0c;限幅器其实像TVS功能一样&#xff0c;让超过阈值的功率释放到接地上&#xff0c;来达到限制幅度的目的&#xff0c;目前限幅器的限幅幅度大多都大于15dBm,很…

软件测试 - 第四章课后作业

软件测试 - 第四章课后作业 一单选题&#xff08;共6题&#xff0c;33分&#xff09; (单选题)下列选项中&#xff0c;不属于HTTP请求组成部分的是( )。 A. 请求行 B. 请求体 C. 状态行 D. 请求头 正确答案: C:状态行;(单选题)下列关于HTTP响应说法错误的是( )。 A. 当服务器…