freemarker是什么

  

freemarker是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 

虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。

FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 

FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 

FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 

FreeMarker是免费的 

1、通用目标 

能够生成各种文本:HTML、XML、RTF、Java源代码等等 

易于嵌入到你的产品中:轻量级;不需要Servlet环境 

插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等 

你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器 

2、强大的模板语言 

所有常用的指令:include、if/elseif/else、循环结构 

在模板中创建和改变变量 

几乎在任何地方都可以使用复杂表达式来指定值 

命名的宏,可以具有位置参数和嵌套内容 

名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突 

输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换 

3、通用数据模型 

freeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示 

你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰 

4、为Web准备 

  • 在模板语言中内建处理典型Web相关任务(如HTML转义)的结构 

  • 能够集成到Model2 Web应用框架中作为JSP的替代 

  • 支持JSP标记库 

  • 为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员 

5、智能的国际化和本地化 

  • 字符集智能化(内部使用UNICODE) 

  • 数字格式本地化敏感 

  • 日期和时间格式本地化敏感 

  • 非US字符集可以用作标识(如变量名) 

  • 多种不同语言的相同模板 

6、强大的XML处理能力 

<#recurse> 和& lt; # visit>指令(2.3版本)用于递归遍历XML树,

在模板中清楚和直觉的访问XML对象模型,

<强> Helloworld

新建一个WEB工程,下载(我使用的是freemarker-2.3.20) freemarker并导入freemarker.jar,在- inf下新建文件夹模板用于存放模版文件

在模板下新建测试。ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下:

& lt; html>,   & lt; head>大敌;   ,,,& lt; title> freemarker测试& lt;/title>,   & lt;/head>才能,   ,,& lt; body>   ,,,& lt; h2> ${消息}{名称}& lt;美元/h2>,   & lt;/body>才能,   & lt;/html>

新建一个Servlet,用于请求设置变量,并处理模版的输出:

package  com.test.servlet;,   import  java.io.IOException,   import  java.io.Writer,   import  java.util.HashMap,   import  java.util.Map,   import  javax.servlet.ServletException,   import  javax.servlet.http.HttpServlet,   import  javax.servlet.http.HttpServletRequest,   import  javax.servlet.http.HttpServletResponse,   import  freemarker.template.Configuration,   import  freemarker.template.Template,   import  freemarker.template.TemplateException,   @SuppressWarnings (“serial"),   public  class  HelloFreeMarkerServlet  extends  HttpServlet  {,//才能,负责管理FreeMarker模板的配置实例,   private 才能Configuration  cfg =,零,,   public 才能;void  init (), throws  ServletException  {,   ,,,//,创建一个FreeMarker实例,   ,,,cfg =, new 配置();,   ,,,//,指定FreeMarker模板文件的位置,   ,,,cfgsetServletContextForTemplateLoading (getServletContext (),,   ,,,,,,,,/web - inf/templates"),,   ,,},   @SuppressWarnings才能(“unchecked"),   public 才能;void  doPost (HttpServletRequest 请求,HttpServletResponse 响应),   ,,,,,throws  ServletException, IOException  {,   ,,,//,建立数据模型,   ,,,Map  root =, new  HashMap (),,   ,,,root.put (“message",,“hello  world"),,   ,,,root.put (“name",,“java小强“),,   ,,,//,获取模板文件,   ,,,Template  t =, cfg.getTemplate (“test.ftl");,   ,,,//,使用模板文件的字符集作为本页面的charset    ,,,//,使用文本/html  MIME-type    ,,,responsesetContentType (“text/html, charset=? +, tgetEncoding ()),,   ,,,Writer  out =, response.getWriter (),,   ,,,//,合并数据模型和模板,并将结果输出到出中,   ,,,try  {,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

freemarker是什么