首页 > 编程知识 正文

Spring源码,java freemarker

时间:2023-05-04 20:48:25 阅读:157306 作者:1977

Springboot系列-集成Freemaker前言:我们知道,目前互联网行业的项目正在走向前后付费分离的模式,但不分离的开发依然存在。 另外,在之前的博客中提到了Springboot集成Thymleaf,什么是Freemaker? 他和Thymleaf有什么不同?

Freemaker配置文件FreeMarker是一个模板引擎。 一种通用工具,用于基于模板和更改后数据生成输出文本(HTML页面、电子邮件、配置文件、源代码等),不是面向最终用户的,而是Java类库,程序员

FreeMarker与Web容器无关。 这意味着在运行Web时不知道servlet或HTTP。 它不仅可以作为表示层的实现技术,还可以用于XML、JSP、Java等的生成

以上是从Freemaker官网上被骗的流程图。 详情请参阅Freemaker官方网站。 但是,如上所示,Freemarker可以将模板和数据渲染为HTML

Freemarker模板后缀是. FTL(freemarkertemplatelanguage ),它是一种简单而专用的语言,而不是像Java那样成熟的编程语言。 无论是在模板中,还是在模板之外,都可以集中精力关注如何表达什么样的数据。 关于他与Thymleaf的操作方式如何不同,请看下面

创建集成freemaker1.freemaker项目

(用Spring Initializr创建)

(选择Freemaker模板引擎)

2.pom文件依赖于

ependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-freemarker/artifact id/ependencydependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-web/artifact id/depend 可以在org.spring framework.boot.auto configure.freemarker.freemarkerautoconfiguration类中查看。

如果freemarker.template.configuration和FreeMarkerConfigurationFactory位于classpath下,则会启用配置。 这意味着在部署freemarker后,配置将生效。 但是,此处的自动化配置只对模板进行位置检查,其他配置在导入的freemarkerservletwebconfiguration配置中进行。 接下来,我们来看看freemarkerservletwebconfiguration类。 部分源代码如下所示。

那么,这个源代码的部分是什么意思?

@ConditionalOnWebApplication表示当前配置在web环境中有效。 ConditionalOnClass表示当前配置仅在servlet和FreeMarkerConfigurer存在时才有效。 @AutoConfigureAfter在utoConfiguration表明当前自动配置在WebMvccurer中有效后,完成了生成方法的FreeMarkerProperties。 在这里单击查看源代码说明。

虽然FreeMarkerProperties配置了基本的Freemarker信息,例如模板位置为classpath:/templates/且模板后缀为. ftlh,但实际上

创建用户类

public class user { privatestring id; 私有字符串名称; 私有字符串sex; 公共字符串getid () { return id; }publicvoidsetid(stringid ) { this.id=id; } public String getName () { return name; }publicvoidsetname(stringname ) { this.name=name; } public String getSex () { return sex; }publicvoidsetsex(stringsex ) )。

{ this.sex = sex; }}

5.在controller层中创建StartController

@Controllerpublic class StartController { @GetMapping("/start") public String start(Model model){ List<User> list = new ArrayList<>(); User user = new User(); user.setId("001"); user.setName("王帅帅"); user.setSex("男"); User user1 = new User(); user1.setId("002"); user1.setName("王小帅"); user1.setSex("男"); User user2 = new User(); user2.setId("003"); user2.setName("王衰衰"); user2.setSex("女"); list.add(user); list.add(user1); list.add(user2); model.addAttribute("users",list); return "start"; }}

6.在 freemarker 中渲染数据 ,在resource下面新建templates目录,在templates目录下创建 start.flth文件,此处注意是后缀 .flth ,不是 .html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><table border="1"> <tr> <td>编号</td> <td>名字</td> <td>性别</td> </tr> <#list users as user> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.sex}</td> </tr> </#list></table></body></html>

7.运行结果如下

其他配置

刚才上面说道,如果要修改模版文件位置等,可以在 application.properties 中进行配置:

spring.freemarker.allow-request-override=falsespring.freemarker.allow-session-override=falsespring.freemarker.cache=falsespring.freemarker.charset=UTF-8spring.freemarker.check-template-location=truespring.freemarker.content-type=text/htmlspring.freemarker.expose-request-attributes=falsespring.freemarker.expose-session-attributes=falsespring.freemarker.suffix=.ftl#spring.freemarker.suffix=.ftlhspring.freemarker.template-loader-path=classpath:/templates/

配置文件按照顺序依次解释如下:

HttpServletRequest的属性是否可以覆盖controller中model的同名项HttpSession的属性是否可以覆盖controller中model的同名项是否开启缓存模板文件编码是否检查模板位置Content-Type的值是否将HttpServletRequest中的属性添加到Model中是否将HttpSession中的属性添加到Model中模板文件后缀模板文件位置

结语:对于Springboot整合Freemaker就简单介绍到这里,通过上述也很清楚的明白了他和Thymleaf有哪些异同之处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。