现在我们的计算机发展很是迅速,一般的朋友可能只知道利用电脑现成的软件进行娱乐或者工作,并不是很了解软件的开发是需要一个很长时间的过程,并且需要很多的人花时间去写程序。对计算机稍微有点了解的朋友就知道,一个程序的开发需要一个适应的开发运行环境,并且需要很多的数据兼容工具,比如说java模板引擎,这个是必不可少的,不然我们就无法正常进行工作。FreeMarker.jar是一款功能强大并且完全免费的java模板引擎,简单的说就是一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具,它的出现主要是为了解决Struts2当中缺少freemarker.jar的问题。它不是为最终用户设计的,而是一个Java类库,一个程序员可以嵌入到他们开发的产品中的组件,也就是说这个就跟一个工具组件一样,与其它软件配合使用。它是用Java语言编写的,主要用于MVC中的视图层,生成HTML显示数据给客户端,可以完全替代JSP。软件是独立于Web容器,也就是说,它在Web运行时不知道servlet或HTTP,它不仅可以用作表示层的实现技术,还可以生成Java编程语言等。软件拥有一个非常强大的模板语言数据库,能够提供许多有用的和常用的指令标记,并且可以生成HTML、XML、RTF、Java源代码等,功能上可以说是非常全面了,专业性也极强,非常适合从事于程序开发的工作人员使用。本次小编带来的是免费版,欢迎需要的朋友来本站免费下载体验!~
能够生成各种文本:HTML、XML、RTF、Java源代码等等;
易于嵌入到你的产品中:轻量级;不需要Servlet环境;
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等;
你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器。
2、强大的模板语言
所有常用的指令:include、if/elseif/else、循环结构;
在模板中创建和改变变量;
几乎在任何地方都可以使用复杂表达式来指定值;
命名的宏,可以具有位置参数和嵌套内容;
名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突;
输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换。
3、通用数据模型
不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示;
你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰。
4、为Web准备
在模板语言中内建处理典型Web相关任务(如HTML转义)的结构;
能够集成到Model2 Web应用框架中作为JSP的替代;
支持JSP标记库;
为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员。
5、智能的国际化和本地化
字符集智能化(内部使用UNICODE);
数字格式本地化敏感;
日期和时间格式本地化敏感;
非US字符集可以用作标识(如变量名);
多种不同语言的相同模板。
6、强大的XML处理能力
<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树;
在模板中清楚和直觉的访问XML对象模型;
开源论坛JForum就是使用了FreeMarker做为页面模板。

页面中的用户名(即上面的“Big Joe”)是登录这个网页的访问者的名字, 并且最新产品的数据应该来自于数据库才能随时更新。所以,不能直接在HTML页面中输入“Big Joe”、“greenmouse”及链接, 不能使用静态HTML代码。可以使用要求输出的模板来解决,模板和静态页面是相同的,只是它会包含一些程序将它们变成动态内容的指令:

模板文件存放在Web服务器上,当有人来访问这个页面,程序就会介入执行,然后动态转换模板,用最新的数据内容替换模板中${...}的部分,之后将结果发送到访问者的Web浏览器中。访问者的Web浏览器就会接收到例如第一个HTML示例那样的内容(也就是没有指令的HTML代码),访问者也不会察觉到服务器端使用。(存储在Web服务器端的模板文件是不会被修改的;替换也仅仅出现在Web服务器的响应中。)
为模板准备的数据整体被称作为数据模型。数据模型是树形结构(就像硬盘上的文件夹和文件),在视觉效果上, 数据模型可以是(这只是一个形象化显示,数据模型不是文本格式,它来自于Java对象):

早期版本中,可以从数据模型中选取这些值,使用user和latestProduct.name表达式即可。类比于硬盘的树形结构,数据模型就像一个文件系统,“(root)”和latestProduct就对应着目录(文件夹),而user、url和name就是这些目录中的文件。
总体上,模板和数据模型是FreeMarker来生成输出所必须的组成部分:模板+数据模型=输出
项目创建流程
第一步:创建一个maven项目导入FreeMarker jar包;
第二步:创建目录templates,并创建一个模版文件hello.ftl;
第三步:创建一个运行模版引擎的FreeMarkerDemo.java文件;
第四步:运行main方法后刷新项目;
pom.xml文件,maven项目核心文件,管理jar包。
数据类型
和java不同,不需要定义变量的类型,直接赋值即可。
字符串: value = "xxxx" 。如果有特殊字符 string = r"xxxx" 。单引号和双引号是一样的。
数值:value = 1.2。数值可以直接等于,但是不能用科学计数法。
布尔值:true or false。
List集合:list = ; list= 表示 1 到 100 的集合,反之亦然。
Map集合:map = {"key" : "value" , "key2" : "value2"},key 必须是字符串哦!
实体类:和EL表达式差不多,直接点出来。
字符串操作
字符串连接:可以直接嵌套${"hello , ${name}"} ; 也可以用加号${"hello , " + name}
字符串截取:string。index 可以是一个值,也可以是形如 0..2 表示下标从0开始,到下标为2结束。一共是三个数。
比较运算符
== (等于),!= (不等于),gt(大于),gte(大于或者等于),lt(小于),lte(小于或者等于)。不建议用 >,< 可能会报错!
一般和 if 配合使用
内建函数
提供了一些内建函数来转换输出,其结构:变量?内建函数,这样就可以通过内建函数来转换输出变量。
html: 对字符串进行HTML编码;
cap_first: 使字符串第一个字母大写;
lower_case: 将字符串转成小写;
upper_case: 将字符串转成大写;
size: 获得集合中元素的个数;
int: 取得数字的整数部分。
变量空判断
! 指定缺失变量的默认值;一般配置变量输出使用
?? 判断变量是否存在。一般配合if使用 <#if value??>
宏指令
可以理解为java的封装方法,供其他地方使用。宏指令也称为自定义指令,macro指令
语法很简单:<#macro val > 声明macro ; 使用macro <@val />
命名空间
可以理解为java的import语句,为避免变量重复。一个重要的规则就是:路径不应该包含大写字母,使用下划线_分隔词语,myName --> my_name
语法很简单:<#import "xxx.ftl" as val>
其他没有说明的语法是因为和java一样,没什么特别之处。所以没有列出来。
jsp
优点:
1、功能强大,可以写java代码;
2、支持jsp标签(jsp tag);
3、支持表达式语言(el);
4、官方标准,用户群广,丰富的第三方jsp标签库;
5、性能良好。jsp编译成class文件执行,有很好的性能表现。
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。
velocity
优点:
1、不能编写java代码,可以实现严格的mvc分离;
2、性能良好,据说比jsp性能还要好些;
3、使用表达式语言,据说jsp的表达式语言就是学velocity的。
缺点:
1、不是官方标准;
2、用户群体和第三方标签库没有jsp多;
3、对jsp标签支持不够好。
优点:
1、不能编写java代码,可以实现严格的mvc分离;
2、性能非常不错;
3、对jsp标签支持良好;
4、内置大量常用功能,使用非常方便;
5、宏定义(类似jsp标签)非常方便;
6、使用表达式语言。
缺点:
1、不是官方标准;
2、用户群体和第三方标签库没有jsp多。
选择freemarker的原因
1、性能。velocity应该是最好的,其次是jsp,普通的页面性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,该软件的性能比使用tag和el的jsp好;
2、宏定义比jsp tag方便;
3、内置大量常用功能,比如html过滤,日期金额格式化等等,使用非常方便;
4、支持jsp标签;
5、可以实现严格的mvc分离。

软件特色
1、通用目标能够生成各种文本:HTML、XML、RTF、Java源代码等等;
易于嵌入到你的产品中:轻量级;不需要Servlet环境;
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等;
你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器。
2、强大的模板语言
所有常用的指令:include、if/elseif/else、循环结构;
在模板中创建和改变变量;
几乎在任何地方都可以使用复杂表达式来指定值;
命名的宏,可以具有位置参数和嵌套内容;
名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突;
输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换。
3、通用数据模型
不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示;
你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰。
4、为Web准备
在模板语言中内建处理典型Web相关任务(如HTML转义)的结构;
能够集成到Model2 Web应用框架中作为JSP的替代;
支持JSP标记库;
为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员。
5、智能的国际化和本地化
字符集智能化(内部使用UNICODE);
数字格式本地化敏感;
日期和时间格式本地化敏感;
非US字符集可以用作标识(如变量名);
多种不同语言的相同模板。
6、强大的XML处理能力
<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树;
在模板中清楚和直觉的访问XML对象模型;
开源论坛JForum就是使用了FreeMarker做为页面模板。
工作原理
假设在一个应用系统中需要一个HTML页面如下:
页面中的用户名(即上面的“Big Joe”)是登录这个网页的访问者的名字, 并且最新产品的数据应该来自于数据库才能随时更新。所以,不能直接在HTML页面中输入“Big Joe”、“greenmouse”及链接, 不能使用静态HTML代码。可以使用要求输出的模板来解决,模板和静态页面是相同的,只是它会包含一些程序将它们变成动态内容的指令:

模板文件存放在Web服务器上,当有人来访问这个页面,程序就会介入执行,然后动态转换模板,用最新的数据内容替换模板中${...}的部分,之后将结果发送到访问者的Web浏览器中。访问者的Web浏览器就会接收到例如第一个HTML示例那样的内容(也就是没有指令的HTML代码),访问者也不会察觉到服务器端使用。(存储在Web服务器端的模板文件是不会被修改的;替换也仅仅出现在Web服务器的响应中。)
为模板准备的数据整体被称作为数据模型。数据模型是树形结构(就像硬盘上的文件夹和文件),在视觉效果上, 数据模型可以是(这只是一个形象化显示,数据模型不是文本格式,它来自于Java对象):

早期版本中,可以从数据模型中选取这些值,使用user和latestProduct.name表达式即可。类比于硬盘的树形结构,数据模型就像一个文件系统,“(root)”和latestProduct就对应着目录(文件夹),而user、url和name就是这些目录中的文件。
总体上,模板和数据模型是FreeMarker来生成输出所必须的组成部分:模板+数据模型=输出
使用教程
这里通过模拟简单的代码自动生产工具来感受第一个程序。项目创建流程
第一步:创建一个maven项目导入FreeMarker jar包;
第二步:创建目录templates,并创建一个模版文件hello.ftl;
第三步:创建一个运行模版引擎的FreeMarkerDemo.java文件;
第四步:运行main方法后刷新项目;
pom.xml文件,maven项目核心文件,管理jar包。
使用方法
语法详解数据类型
和java不同,不需要定义变量的类型,直接赋值即可。
字符串: value = "xxxx" 。如果有特殊字符 string = r"xxxx" 。单引号和双引号是一样的。
数值:value = 1.2。数值可以直接等于,但是不能用科学计数法。
布尔值:true or false。
List集合:list = ; list= 表示 1 到 100 的集合,反之亦然。
Map集合:map = {"key" : "value" , "key2" : "value2"},key 必须是字符串哦!
实体类:和EL表达式差不多,直接点出来。
字符串操作
字符串连接:可以直接嵌套${"hello , ${name}"} ; 也可以用加号${"hello , " + name}
字符串截取:string。index 可以是一个值,也可以是形如 0..2 表示下标从0开始,到下标为2结束。一共是三个数。
比较运算符
== (等于),!= (不等于),gt(大于),gte(大于或者等于),lt(小于),lte(小于或者等于)。不建议用 >,< 可能会报错!
一般和 if 配合使用
内建函数
提供了一些内建函数来转换输出,其结构:变量?内建函数,这样就可以通过内建函数来转换输出变量。
html: 对字符串进行HTML编码;
cap_first: 使字符串第一个字母大写;
lower_case: 将字符串转成小写;
upper_case: 将字符串转成大写;
size: 获得集合中元素的个数;
int: 取得数字的整数部分。
变量空判断
! 指定缺失变量的默认值;一般配置变量输出使用
?? 判断变量是否存在。一般配合if使用 <#if value??>
宏指令
可以理解为java的封装方法,供其他地方使用。宏指令也称为自定义指令,macro指令
语法很简单:<#macro val > 声明macro ; 使用macro <@val />
命名空间
可以理解为java的import语句,为避免变量重复。一个重要的规则就是:路径不应该包含大写字母,使用下划线_分隔词语,myName --> my_name
语法很简单:<#import "xxx.ftl" as val>
其他没有说明的语法是因为和java一样,没什么特别之处。所以没有列出来。
软件优缺点
在java领域,表现层技术主要有三种:jsp、freemarker、velocity。jsp
优点:
1、功能强大,可以写java代码;
2、支持jsp标签(jsp tag);
3、支持表达式语言(el);
4、官方标准,用户群广,丰富的第三方jsp标签库;
5、性能良好。jsp编译成class文件执行,有很好的性能表现。
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。
velocity
优点:
1、不能编写java代码,可以实现严格的mvc分离;
2、性能良好,据说比jsp性能还要好些;
3、使用表达式语言,据说jsp的表达式语言就是学velocity的。
缺点:
1、不是官方标准;
2、用户群体和第三方标签库没有jsp多;
3、对jsp标签支持不够好。
优点:
1、不能编写java代码,可以实现严格的mvc分离;
2、性能非常不错;
3、对jsp标签支持良好;
4、内置大量常用功能,使用非常方便;
5、宏定义(类似jsp标签)非常方便;
6、使用表达式语言。
缺点:
1、不是官方标准;
2、用户群体和第三方标签库没有jsp多。
选择freemarker的原因
1、性能。velocity应该是最好的,其次是jsp,普通的页面性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,该软件的性能比使用tag和el的jsp好;
2、宏定义比jsp tag方便;
3、内置大量常用功能,比如html过滤,日期金额格式化等等,使用非常方便;
4、支持jsp标签;
5、可以实现严格的mvc分离。

∨ 展开

clash for windows中文破解版
VueScan Prov9.6.40免注册版
伴车星v3.3.6电脑版
KeyShot Pro7(电脑实时渲染工具) V7.3.40 官方版
雄心壮志修改器 32/64位 最新免费版
Lighten PDF Converter Masterv6.1.0破解版
StoryBoard Quick 6中文破解版
Wand(豌豆编辑器) V1.1.0 官方版
ToDesk XP版本 V4.6.1.3 官方免费版
按键精灵全权限破解版 v9.61.12282 附脚本制作教程
vs 2022中文语言包
VMProtect Ultimatev3.4.0中文破解版(附注册码)
Adobe ExtendScript Toolkit CCv4.0.0.1中文绿色版
Visual Assist xv10.9中文破解版
HxD Hex Editor(16进制编辑器)v2.3.0 中文绿色版
CHM Editor(CHM编辑器)v3.0.1中文破解版