贵阳建网站,南昌做网站哪个公司好,微信小商店分销系统,软件仓库springboot_3.2_freemark_基础环境配置 一、前言二、环境三、相关资料四、目标五、默认配置项六、构建springboot 3.2项目6.1 pom.xml 内容#xff1a;6.2 启动类6.3 添加ftlh模板6.4 controller内容6.5 bootstrap.yml配置 七、总结 一、前言
FreeMarker 是一款模板引擎… springboot_3.2_freemark_基础环境配置 一、前言二、环境三、相关资料四、目标五、默认配置项六、构建springboot 3.2项目6.1 pom.xml 内容6.2 启动类6.3 添加ftlh模板6.4 controller内容6.5 bootstrap.yml配置 七、总结 一、前言
FreeMarker 是一款模板引擎即一种基于模板和要改变的数据 并用来生成输出文本(HTML网页电子邮件配置文件源代码等)的通用工具。 它不是面向最终用户的而是一个Java类库是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarker Template Language (FTL)。它是简单的标签语言。需要在服务器端组织数据之后通过编写FTL模板显示已经准备好的数据。在模板中你可以专注于如何展现数据而在模板之外可以专注于要展示什么数据。 注从freemarker 2.x 开始模板的默认后缀由 ftl 改为 ftlh配置类FreeMarkerProperties.DEFAULT_SUFFIX。 二、环境
java 21springboot 3.2
三、相关资料
freemark中文管网
四、目标
sprinboot 3.2 整合freemarker基础配置加入freemarker模板编写controller将绑定数据输出到模板中运行测试页面
五、默认配置项
jar包spring-boot-autoconfigure-3.2.0.jar 对象org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties
六、构建springboot 3.2项目
项目是通过idea脚手架创建由于2.x不在维护建项目时通过服务https://start.spring.io只能创建springboot3.x项目如果想要创建低版本可以使用阿里的脚手架start.aliyun.com。springboot3.x只支持java 17 及以上版本。所以建项目前先配置好本地的jdk。
idea脚手架服务更改位置file/New/New Project/Sping Initializr : Server URL start.string.io 点击后面的齿轮标记修改
6.1 pom.xml 内容
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.0/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.test/groupIdartifactIdtest2312/artifactIdversion0.0.1-SNAPSHOT/versionnametest2312/namedescriptiontest2312/descriptionpropertiesjava.version21/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-freemarker/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/build/project
6.2 启动类
其中在SpringBootApplication注解中屏蔽了DataSourceAutoConfiguration.class的加载目的是避免出现“ Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.” 错误提示。
因为我们目的只是验证freemarker不需要数据库相关的依赖所以不需要配置数据源相关配置。而springboot基础依赖中默认加载了MySQL、Oracle、Mybatis等和数据库相关的依赖包结果我们的配置文件中却没有添加数据库相关的配置。
package com.test;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;SpringBootApplication(exclude {DataSourceAutoConfiguration.class
})
public class StartApplication {public static void main(String[] args) {SpringApplication.run(StartApplication.class, args);}}
6.3 添加ftlh模板
freemarker2.x开始默认的后缀由ftl改为ftlh了使用ftl在freemarker3.x中是找不到的。 模板中对spring、list、map等常用的类型做了绑定和遍历示例。加了个test目录是需要与后面的controller的地址一致。
模板位置resources\templates\test\index.ftlh
html
headtitleWelcome!/title
/head
/bodybrh1Welcome ${user} !/h1brb展示list中的数据:/bpul#list lst as itemli${item}/li/#list/ulul/ul/p
pbmap遍历key值遍历/bul#assign keysmap?keys/#list keys as keylikey${key}; value${map[${key}]};/li/#list/ulbmap遍历直接遍历/bul#list map?keys as keylikey${key}; value${map[${key}]};/li/#list/ulbmap遍历直接遍历值/bul#list map?values as valuelivalue${value};/li/#list/ul
/p
/body
/html6.4 controller内容
controller中有两个方法分别是返回text内容 和 绑定ftlh模板内容。
package com.test.controller;import lombok.extern.log4j.Log4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.View;import java.util.Arrays;
import java.util.HashMap;Controller
RequestMapping(/test)
public class TestController {private Logger logger LoggerFactory.getLogger(this.getClass());GetMapping(/hello)ResponseBodypublic String hello(){logger.info(hello word~~~);return hello word!;}GetMapping(/index.html)public String index(Model model){model.addAttribute(user,joy);var lst Arrays.asList(11,22,33);var lst4empty new HashMap();var map new HashMapString,Object(){{put(k1,11);}{put(k2,22);}{put(k3,33);}};model.addAttribute(lst,lst);model.addAttribute(lst4empty,lst4empty);model.addAttribute(map,map);logger.info(test index ~~~);return /test/index;}}
6.5 bootstrap.yml配置
使用这个配置可以方便做环境切换启动项目时传入dev这个forfile参数可以读到dev环境配置。
spring:profiles.active: ${profile:dev}application:name: test2312http:multipart:max-file-size: 2MBmax-request-size: 2MB
---
spring.profiles: dev
spring:freemarker:templateLoaderPath: classpath:/templates/preferFileSystemAccess: true #支持热加载默认为true(生产时false七、总结
以上就是一个比较基础的整合过程需要注意的是通过idea构建时依赖尽量选择少的依赖否则容易出现各种错误。