从零学习freemarker(2)给模板传递参数的测试

从零学习freemarker 2 给模板传递参数的测试 阅读详情
原文:http://www.java2000.net/p7841

程序代码
 

  1. package freemarker;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.OutputStreamWriter;
  5. import java.io.Writer;
  6. import java.util.HashMap;
  7. import java.util.Map;
  8. import freemarker.template.Configuration;
  9. import freemarker.template.Template;
  10. public class Test2 {
  11.   private Configuration cfg;
  12.   public Configuration getCfg() {
  13.     return cfg;
  14.   }
  15.   public void init() throws Exception {
  16.     cfg = new Configuration();
  17.     cfg.setDirectoryForTemplateLoading(new File("bin/freemaker"));
  18.   }
  19.   public static void main(String[] args) throws Exception {
  20.     Test2 obj = new Test2();
  21.     obj.init();
  22.     Map root = new HashMap();
  23.     root.put("user", "java2000.net");
  24.     Map latestProduct = new HashMap();
  25.     latestProduct.put("url", "http://www.java2000.net");
  26.     latestProduct.put("name", "Java世纪网");
  27.     root.put("latestProduct", latestProduct);
  28.     Template t = obj.getCfg().getTemplate("Test2.ftl");
  29.     Writer out = new OutputStreamWriter(new FileOutputStream("Test2.html"), "GBK");
  30.     t.process(root, out);
  31.     System.out.println("Successfull................");
  32.   }
  33. }


模板
  1. <html>
  2. <head>
  3.   <title>Welcome!</title>
  4. </head>
  5. <body>
  6.   <h1>Welcome ${user}!</h1>
  7.   <p>Our latest product:
  8.   <a href="${latestProduct.url}">${latestProduct.name}</a>!
  9. </body>
  10. </html> 


运行结果

  1. <html>
  2. <head>
  3.   <title>Welcome!</title>
  4. </head>
  5. <body>
  6.   <h1>Welcome java2000.net!</h1>
  7.   <p>Our latest product:
  8.   <a href="http://www.java2000.net">Java世纪网</a>!
  9. </body>
  10. </html> 


分析:
数据结构为
(root)
|
+- user = "java2000.net"
|
+- latestProduct
|
+- url = "http://www.java2000.net"
|
+- name = "Java世纪网"

我们使用嵌套的Map给其传递参数








<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Freemarker模板注入漏洞深度剖析:从原理到修复实战 模板引擎是现代Web开发中用于动态生成文本输出的核心技术,其工作原理是将数据模型与预设模板结合,生成最终的HTML、邮件或配置文件。以Freemarker为代表的模板引擎通过强大的指令系统实现了高度灵活性,但这也带来了安全风险——当用户可控的输入未经严格校验直接传递给模板引擎时,就可能引发模板注入漏洞。这种漏洞的技术价值在于攻击者可利用引擎特性执行任意代码,实现远程命令执行(RCE),对服务器安全构成严重威胁。在低代码开发平台等应用场景中,用户上传自定义模板的功能若未做安全隔离,极易成为攻击入口。本文以典型 阅读详情

相关推荐

比Synergy更轻量!Barrier鼠标共享工具实测:5分钟实现Win/Mac/Linux三设备无缝切换

本文实测了开源免费的Barrier鼠标共享工具,详细指导用户如何在5分钟内于Windows、macOS和Linux三台设备间实现一套键鼠的无缝切换。文章对比了其与Synergy的优势,提供了分平台安装、核心服务端-客户端配置、防火墙设置等完整教程,并分享了解决连接问题的关键技巧,是提升多设备办公效率的实用指南。

weixin_29304021的博客 600

freemarker(FTL)常见语法大全

FreeMarker的插值有如下两种类型: 1,通用插值${expr}; 2,数字格式化插值:#{expr}或#{expr;format}    通用插值: ${book.name?if_exists }        //用于判断如果存在,就输出这个值  ${book.name?default(‘xxx’)}  //默认值xxx  ${book.name!"xxx"}     ...

1191

GNSS数据处理新手避坑:手把手教你用GAMP_GOOD下载IGS/MGEX数据(附.cfg文件详解)

本文详细介绍了如何使用GAMP_GOOD进行GNSS数据处理,从基础配置到高级参数调优,帮助新手避开常见错误。内容包括软件安装、配置文件详解、数据源选择、测站文件配置以及性能优化技巧,特别适合GNSS数据处理初学者快速上手。

weixin_30338481的博客 390

freemarker里的分页--ftl文件的传值

在上一篇《freemarker里的分页--ftl文件》中我们讨论了分页的逻辑,在这一篇文章中,我们开始看一下如何进行ftl的传值 也许你在上一篇文章中已经发现了端倪,是的,不错,我们需要一个类 package com.yunlu.leagueofitlovers.system.util; public class PageUtil { private int dataCount; p

junjun56的专栏 5490

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1486

uniapp APP端:蓝牙报错writeBLECharacteristicValue:fail property not support(uni.writeBLECharacteristicVal)

uni-app 蓝牙fail property not support、发现不了服务特征值的问题、突然发现微信蓝牙小秘密,使用uni-app编译成安卓APP后报错writeBLECharacteristicValue:fail property not support,发现不了服务特征值,uniApp APP调用蓝牙API发送指令过快导致,uniapp 蓝牙 writeBLECharacteristicValue property_not_support iOS Android BLE GATT 特征值写入

✅ 精选推荐文章 2943

使用freemarker模板取值时,当属性为空时报错

freemarker中表达式 ${(user.name)!"}当name为空时,直接报错。 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,用FreeMarker判断对象是否为空的方法。 一般数据在后端判断, 前端不管逻辑只管显示。 freemarker中显示某对象使用${name}. 但如果name为null,freemarker就会报错。如果需要判断对象是否为空:<#if name??>……</#if>。当然也可以通过设置默认值${name

lisheng19870305的专栏 1969

2026年海能达嵌入式岗位面试题集(含参考答案)

本文总结了嵌入式系统开发中的常见面试题,涵盖项目经验、外设接口、存储系统、编程基础、操作系统等核心模块。主要内容包括:1)项目核心经历的硬件/软件架构及问题解决思路;2)SPI、I2C等接口协议的时序特点与应用要点;3)NAND Flash存储管理中的ECC校验原理和文件系统对接方案;4)USB设备枚举流程等关键知识点。这些题目针对嵌入式岗位的技术考察重点,既包含底层硬件接口细节,也涉及系统级设计与优化策略,全面考察开发者的嵌入式系统能力。

Open 362

freemarker无法传值到前台

freemarker无法传值到前台目前已知的原因有三: Action中没有GET,SET方法 struts.xml,action->result中的type属性须为”freemarker” Action的父类中不能有与Action中同名的属性

hu81966的博客 1068

配置某VLAN下ONU的二层互访(隔离)问题(解决OLT二层隔离问题)

问题:OLT的ONU节点之间在同一VLAN下的终端默认隔离,在确实需要互通的场景下如何解决。

symstandsun的博客 4569

Epicor ERP 界面新增客制化字段操作方法

我发现国内对于epicor这个erp软件的教程非常少,所以录制一些我实际遇到的需求,整理了实现过程,提供给大家参考。

cqxianggang的专栏 413

freemarker include指令传递参数

向需要include进来的ftl文件传递动态参数

jiangshanwe 9490

ROS从入门到精通6-2:gmapping激光建图与自定义建图功能包

本文用Turtlebot3实例直观介绍激光建图概念,并实现自定义建图功能包(自动建图与键盘手动控制建图)

FRIGIDWINTER的博客 2662

freemarker(2)给模板传递参数的测试

转载:[url]http://tech.ddvip.com[/url] [code="java"] package freemarker; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import ja...

百威 965

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

模板引擎:FreeMarker

FreeMarker 是一种功能强大的模板引擎,主要用于生成动态文本输出,如网页、电子邮件、配置文件等。它支持变量、表达式、循环、条件判断等编程结构,能够灵活处理数据并生成动态内容。FreeMarker 与 Java 集成良好,可轻松用于生成 HTML、XML 等文本格式,并支持与 Spring、Struts 等框架集成。其工作原理基于模板文件和数据模型,通过模板引擎解析并生成最终输出。使用步骤包括引入 FreeMarker 库、创建模板文件、准备数据模型、配置 FreeMarker 并生成输出。

weixin_62307424的博客 1206

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

freemarker ftl模板_5步骤完成springboot 整合freemarker模板引擎

freemarker是个不错的模板引擎,在网页静态化的模板使用中口碑很好,今天就用springboot来整合这个模板。1、首先就要在pom.xml里添加依赖,前提的springboot相关的依赖也都是必须的。2、第二部就是把freemarker的一些配置信息加到资源文件上,spring.freemarker.template-loader-path指的是freemarker文件的路径信息,spri...

weixin_39880615的博客 300

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot集成Freemarker前端模板

1、在pom.xml中引入freemarker的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker...

weixin_30315905的博客 519

【FreeMarker模板引擎】5.freemarker结合Struts2使用

上一篇讲解了Freemarker与Servlet的结合,这里我们讲解一下Freemarker与Struts2的结合。 同样首先创建一个Web Project工程: 将Struts2的相关核心jar包和Freemarker的jar包放置在lib下,并添加至编译环境。然后将struts2的标签说明文件struts-tags.tld(解压struts2-core-X.X.X.jar文件,在M

程序猿之洞 2046

Freemarker学习资料

  FreeMarker概述FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) FreeMarker不是一个Web应

阿铮的箩筐 1634

Spring整合freemarker发送邮件

一. 背景知识 在上一篇博文: 使用JavaMail发送邮件和接受邮件, 我们学习了原生的JavaApi发送邮件, 我们会发现代码比较多, 特别是当邮件内容很丰富的时候, 我们需要在Java中拼装Html, 是不是觉得非常麻烦.  下面我们使用一种比较简单的方法: spring + javaMail + freemarker, 使用freemarker模板引擎后, 我们就不用再在Jav

技术人生 7445

模板制作工具的比较:FreeMarker vs. Velocity

 1、概述Velocity是一个简单而且更加轻量级的工具,但是它没有达到FreeMarker能够做的许多任务,而且它的模板语言不是很强大我们认为对于大多数应用程序,FreeMarker比Velocity工作更简单,因为:Ø使用Velocity,你需要寻找特定工具或各种工作环境来一次次的解决典型的模板创作任务,结果会浪费更多时间Ø工作环境经常意味着在Velocity模板中直接使用

蓝剑专栏 4076

模板引擎技术---FreeMarker

模板引擎是一种用于生成动态内容的工具,它将数据和静态模板结合起来,生成最终的文档(通常是HTML、XML、JSON等格式),这些文档可以被浏览器或其他客户端解析并展示给用户。模板引擎的主要目的是将数据和表现分离,使得在不改变页面结构的情况下,能够动态地生成页面内容。在Web开发中,模板引擎通常用于构建动态网页。当用户访问一个网页时,服务器端的应用程序会处理请求,从数据库或其他数据源获取数据,然后将这些数据插入到事先定义好的模板中,生成最终的HTML页面,然后返回给用户的浏览器。

qq_55272229的博客 1389

freemarker模板引擎语法及常用指令学习

在controller类方法中使用org.springframework.ui.Model传参。

qq_27577113的博客 937

freemarker模板引擎技术

freemarker模板引擎技术:   先上个图片        简单说就是莫办系统,为了减少重复的代码,更能降低数据库的压力,   优点:速度快,分担高并发,降低服务器压力   缺点:使用的局限性,应用于模板固定的新闻页面,商品详情页面等   文件后缀:XXX.ftl   使用到的技术: IO 流 ->文件的读取->输出生成的文件 使用步骤: ...

weixin_30933531的博客 196
上一篇: 从零学习freemarker(1)老紫竹的第一个freemaker程序
下一篇: 从零学习freemarker(3)IF语句的使用
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值