FreeMarker由浅入深之一 FreeMarker简单介绍

2023-11-15


一、 什么是FreeMarker
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。
所谓模板,就是一份已经写好了基本内容,有着固定格式的文档,其中空出或者用占位符标识的内容,由使用者来填充,不同的使用者给出的数据是不同的。在模板中的占位符,在模板运行时,由模板引擎来解析模板,并采用动态数据替换占位符部分的内容。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等。

二、 FreeMarker的优点和缺点
(一) FreeMarker的优点
1.使用FreeMarker的优点之一,可以彻底的分离表现层和业务逻辑。
使用JSP 开发过程中在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难。
FreeMarker根本不支持Java脚本代码。
FreeMarker的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。

2.使用FreeMarker的优点之二,可以提高开发效率。
在我们以往的开发中,使用的都是JSP 页面来展示数据的,即所谓的表现层。我们都知道,JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换,那么试想一天中我们浪费在程序编译的时间有多少。相对于JSP来说,FreeMarker模板技术不存在编译和转换的问题,所以就不会存在上述问题。而且开发过程中,我们在不必在等待界面设计开发人员完成页面原形后,我们再来开发程序。

3.使用FreeMarker的优点之三,使得开发过程中的人员分工更加明确。
以往用JSP展现数据时,作为程序员的我们,并不熟悉界面设计技术,反之界面开发人员,也并不熟悉程序语言。对两者而言,交替性的工作本身就有难度。有时候稍有不慎,可能会将某个页面元素删除或去掉了某个程序符号,使得页面走样或程序错误,这样就需要双方相互沟通协作,解决出现的问题。有时候因为项目中的时间,任务量等因素的存在,可能这个工作就由一个人来完成,这样就可能加大某一方开发人员的工作量。
使用FreeMarker后,作为界面开发人员,只专心创建HTML文件、图像以及Web页面的其他可视化方面,不用理会数据;而程序开发人员则专注于系统实现,负责为页面准备要显示的数据。

(二)FreeMarker的缺点
1.使用FreeMarker的缺点之一,应用FreeMarker模板技术,在修改模板后,可能会看到已经过期的数据。如:生成静态的HTML页面后,如果一旦模板改变,而没有及时更新模板生成的HTML页面的话,用户看到的就是过期的数据。
2.使用FreeMarker的缺点之二,FreeMarker模板技术在应用过程中,FreeMarker中的变量必须要赋值,如果不赋值,那么就会抛出异常。想避免错误就要应用if/elseif/else 指令进行判段,如果对每一个变量都判断的话,那么则反而增加了编程的麻烦。
3.使用FreeMarker的缺点之三,FreeMarker的map限定key必须是string,其他数据类型无法操作
4.使用FreeMarker的缺点之四,FreeMarker不支持集群应用。为了编成的方便性,把序列化的东西都放到了Session中,如Session,request等,在开发的过程中确实方便,但如果将应用放到集群中,就会出现错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeMarker由浅入深之一 FreeMarker简单介绍 的相关文章

随机推荐

  • R读取csv格式文件;result <- read.table;及报错

    设置文件目录 读取数据csv csv的分隔符 注意表格中不能有逗号 一般仅要设施以下参数 result lt read table file header TRUE sep stringsAsFactors FALSE setwd C Us
  • dll文件保存到服务器,dll是什么文件?dll文件怎么打开?

    dll是Dynamic Link Library的简称 意为动态链接库 dll文件一般被储放在C WindowsSystem目录下 在Windows中 很多应用软件并并不是一个详细的可实行文件 他们被切分成一些相对性单独的动态链接库 即dl
  • SuperSocket使用 IRequestInfo 和 IReceiveFilter 等对象实现自定义协议

    本文章向大家介绍SuperSocket使用 IRequestInfo 和 IReceiveFilter 等对象实现自定义协议 主要包括SuperSocket使用 IRequestInfo 和 IReceiveFilter 等对象实现自定义协
  • 常见性能测试指标

    性能测试核心指标 吞吐量 响应时间 Rsponse Time 并发处理能力 资源占用能力 测试中的时间占比 40 性能测试分析 30 测试执行 30 测试结果分析 而全链路监控就是只要和系统相关的全部需要监控到 吞吐量 单位时间内 系统能够
  • 红黑树与AVL树的区别

    文章目录 红黑树与AVL树的区别 红黑树的一个案列 英文答案 红黑树的高度问题 红黑树的优点 与AVL树的比较 相同点 使用 红黑树为何能比AVL树高效的原因 分析 红黑树的应用领域 java 集合类和c STL Linux 选择RBTre
  • Microsoft Store无法打开解决方法

    Microsoft Store 无法启动 网络出错问题解决 Microsoft Store 无法启动 一直在转圈 最后显示网络出错的问题 解决方法 1 通过搜索打开 gt 控制面板 2 打开 gt 网络和Internet 3 打开 gt I
  • 有道云笔记登录失败,解决办法

    今天登录有道云笔记是 无论是app还是pc端 一直显示登陆失败 摸索了解决方法 先登录网页版官网 网页版肯定可以登录的 https note youdao com 进入账号安全 点击你要登陆的端注销 然后重新登陆 亲测 大功告成
  • VirtualBox 无法选择 64 位的虚拟机

    VirtualBox 无法选择 64 位的虚拟机 问题 解决方案 问题 在Win10 64位机器上安装VirtualBox只显示32bit 没有64bit选项 解决方案 一般是电脑没有把支持虚拟机的选项打开 虚拟化功能被占用 控制面板 程序
  • MYSQL 几种 join

    注意 Oracle数据库支持full join mysql是不支持full join的 但仍然可以同过左外连接 union 右外连接实现 初始化SQL语句 join 建表语句 drop database if exists test cre
  • C为什么斐波那契数列递归50不会栈溢出

    今天看了个文章 是说递归的 大概代码如下 void test int n if n lt 1000000 test n 1 int main test 1 return 0 运行报错 Stack overflow 堆栈溢出 为什么会溢出内
  • Tomcat的JDBC数据源之一(如何使用配置JDBC数据源)

    JDBC数据源是什么 许多 Web 应用程序需要通过 JDBC 驱动程序访问数据库 以支持该应用程序所需的功能 Java EE 平台规范要求 Java EE 应用服务器为此目的提供DataSource实现 即用于 JDBC 连接的连接池 注
  • 独自封装windows 10系统教程(全)

    目录 作者语录 一 封装前准备工具 二 安装Windows系统 1 创建虚拟机环境 2 更改BIOS启动顺序 3 安装windows系统 三 调整系统设置 1 切换管理员账号 2 添加英文输入法 3 关闭windows自动更新 4 取消任务
  • Ubuntu FTP客户端NcFTP 安装教程

    本篇文章主要介绍在Ubuntu 如何使用功能强大的FTP客户端软件NcFTP Ubuntu的源里为我们提供了FTP客户端软件NcFTP 可这款工具对新手来说不是很方便 本文介绍的是一种大家广泛使用的ftp命令行客户 端软件NcFTP 它提供
  • 如何在阿里云linux服务器查看应用日志--部署在tomcat

    1 首先要进入tomcat的目录有一个log目录 2 直接输入 tail f 文件名进行查看日志 例如 tail f catalina out tail f jsvc outfile out
  • Spring注入service为null另类解决办法 工具类 一般类 静态 非controller

    本文转载自 http www cnblogs com allforone p 4108862 html 系统为SpringMVC框架 在开发的过程中有一些工具类需要调用下由spring管理的service层 但是一进注入不进来 报null异
  • 高德地图获取行政区一直报no_data

    代码 let that this this map new AMap Map container zoom 20 级别 center 120 26 30 18 中心点坐标 mapStyle amap styles darkblue 设置地图
  • 【复习笔记】Java基础理论知识,Android小程序开发实例

    lib目录 存放Java的类库文件 src rar文件 构成Java平台核心API的所有类的源文件 5 main 方法 main 方法是Java程序的入口 一个程序只能有一个main 方法 6 转义字符 n 换行 t 制表位 一个制表位等于
  • tshark在流量分析中的绝佳应用(超详细)

    目录 简介 参数 tshark与wireshark对比 基本命令 获取数据包摘要信息 显示时间格式 捕获过滤器 捕获并保存数据包 显示过滤器 区分显示过滤器和读取过滤器 一些好用的显示过滤器 e参数的应用 HTTP中的应用案例 mysql中
  • 在keil开发平台中,常用的Debug菜单命令

    在keil开发平台中 常用的Debug菜单命令如下 start stop debugsession 开始或者停止调试操作 run 一直运行到下一个活动的断点 停止点 如果没有断点 则一直循环运行 step 以行为单位 单步执行代码 step
  • FreeMarker由浅入深之一 FreeMarker简单介绍

    一 什么是FreeMarker FreeMarker是一个用Java语言编写的模板引擎 它基于模板来生成文本输出 所谓模板 就是一份已经写好了基本内容 有着固定格式的文档 其中空出或者用占位符标识的内容 由使用者来填充 不同的使用者给出的数