`
tangzongyun
  • 浏览: 183840 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Freemarker介绍

    博客分类:
  • Java
阅读更多
首先海浪给大家简单介绍一下FreeMarker。FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等。
简单了解了FreeMarker之后,现在就来讲讲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等,在开发的过程中确实方便,但如果将应用放到集群中,就会出现错误。
 

不错的文章

 

分享到:
评论

相关推荐

    freemarker 介绍

    在Web开发中,Freemarker被广泛应用于MVC框架,如Spring MVC,来生成动态视图。以下是对Freemarker核心特性和用法的详细说明: 1. **指令和函数调用**: - `<#...>` 和 `<@.../>` 是Freemarker中的指令和函数调用...

    freemarker介绍

    Freemarker是一种强大的模板引擎,广泛应用于Web开发中,它能够将动态数据转换为静态页面,使得前后端的开发更加高效且分离。Freemarker的灵活性和易用性使其成为初学者快速上手的理想选择,同时也深受专业开发者的...

    FreeMarker中文版word文档

    - **手册结构**:根据给出的文档目录部分,我们可以看出FreeMarker手册包含了前言、FreeMarker介绍等内容。这表明文档会从基础知识入手,逐步深入讲解FreeMarker的各种特性和用法。 - **阅读建议**:对于初学者而言...

    Spring Boot 系列教程 freemarker导出word下载

    FreeMarker介绍** FreeMarker是一个与语言无关的模板引擎,主要用于生成HTML、XML或任何其他文本格式的文档。它将数据模型与模板结合,生成最终的输出。在Java世界中,FreeMarker常用于Web应用中的视图层,比如在...

    FreeMarker使用介绍

    ### FreeMarker使用详解 #### 一、快速入门:模板+数据模型=输出 FreeMarker是一种强大的模板引擎,专为Web开发设计,它基于一个核心理念:设计者和程序员应专注各自的专业领域,即设计者负责视觉表现,如HTML、...

    velocity和freemarker的比较

    以上是对Velocity和FreeMarker的基本介绍和比较,它们都是Java Web开发中的重要工具,理解它们的特性和应用场景有助于选择最适合项目的技术栈。对于标签“源码”和“工具”,我们可以进一步研究这两个模板引擎的源...

    freemarker 源码、中文API、 freemarker Myeclipse 编辑器

    同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示.txt`文件很可能是MyEclipse编辑器中安装Freemarker插件的步骤指南。MyEclipse是一款集成开发环境,对于Java...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    - **数据模型一览**:详细介绍了FreeMarker支持的各种数据类型,包括基本类型(如字符串、数字)、复杂类型(如列表、哈希表)、以及特殊类型(如日期、时间)。 - **模板一览**:提供了关于模板语法的详细介绍,...

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    freemarker编辑器

    本教程将基于提供的"freemarker编辑器"来详细介绍如何配置和使用Freemarker,以及它在实际开发中的应用。 一、Freemarker简介 Freemarker是一个开源的、基于Java的模板引擎,它能够将设计人员的模板与程序逻辑分离...

    freemarker入门文档及例子

    入门文档会详细介绍Freemarker的安装、配置、模板语法以及如何在Java项目中集成。文档会讲解如何创建数据模型,设置Freemarker环境,并解释如何编写模板文件。此外,它还会提供关于模板设计模式和最佳实践的指导。 ...

    freemarker学习资料汇总

    这份手册通常会详细介绍Freemarker的基本概念,如模板语言、模板数据模型以及模板的执行流程。其中,可能会讲解模板元素,如`<#if>`、`<#foreach>`等控制结构,以及`${expression}`这样的变量引用方式。此外,还会...

    freemarker_常用内置函数

    本文将详细介绍Freemarker中常用的内置函数,并通过示例来说明它们的具体用法。 #### 二、Sequence的内置函数 1. **sequence?first** 返回序列(sequence)的第一个元素。例如: ```html ${sequence?first} ```...

    spring mvc freemarker 简单例子

    下面将详细介绍如何在Spring MVC项目中集成并使用Freemarker。 1. **环境配置**: - 首先,确保项目已经引入了Spring MVC和Freemarker的相关依赖库,如`spring-webmvc`和`freemarker`。 - 在Spring的配置文件...

    Freemarker 实例,Freemarker 实例

    下面将详细介绍Freemarker的核心概念、配置、语法以及常见使用场景。 **1. Freemarker核心概念** - **模板(Templates)**:Freemarker的核心是模板文件,它定义了页面的布局和样式,包含变量和控制结构。 - **数据...

    Freemarker中遍历list集合实例

    本实例将详细介绍如何在Freemarker中遍历list集合,帮助你理解和应用这一核心功能。 在Freemarker中,遍历list集合主要依赖于`<#list>`指令。当你有一个Java对象,例如一个ArrayList或LinkedList,这些对象在...

Global site tag (gtag.js) - Google Analytics