zoukankan      html  css  js  c++  java
  • freemarker:简介

    Apache FreeMarker模板引擎:Java库来生成文本输出(HTML网页,电子邮件,配置文件,源代码,等等)基于模板和变化的数据。模板都写在FreeMarker模板语言(FTL),这是一个简单的、专门的语言(不是一个成熟的编程语言(比如PHP)。你要准备的数据显示在一个真正的编程语言,就像数据库查询和做生意的计算问题,然后模板已经准备好的数据的显示。模板中你关注如何呈现数据,和外部的模板你关注哪些数据。

    这种方法通常被称为MVC(模型-视图-控制器)模式,并为动态网页特别受欢迎。它有助于分离网页设计师(HTML作者)从开发者(Java程序员通常)。在模板设计者不会面临复杂的逻辑,可以改变页面的外观无需程序员修改或重新编译代码。

    FreeMarker最初创建时生成HTML页面在MVC web应用程序框架,它不是绑定到servlet或东西的HTML或之上。它的非web应用程序环境中使用。

     

    假设你在一个网站需要一个HTML页面,类似于:

    < html >
    <头>
    <标题>欢迎! < /名称>
    < / ><身体>
    <标题>欢迎John Doe ! < / h1 >
    < p >我们的最新产品:
    < a href = "产品/ greenmouse。html " >绿色鼠标< / > !
    < /身体>
    < / html >

    但用户的名称(上面的“John Doe”)取决于登录的用户是谁,和最新的产品信息应该来自一个数据库。因为这个数据变化,你不能不能使用静态HTML。相反,您可以使用一个模板所需的输出。模板是一样的静态HTML,除了它包含一些指令FreeMarker使其动态:

     

    < html >
    <头>
    <标题>欢迎! < /名称>
    < / ><身体>
    <标题>欢迎$ { user } ! < / h1 >
    < p >我们的最新产品:
    < a href = " $ { latestProduct.url } " > $ { latestProduct.name } < / > !
    < /身体>
    < / html >

    模板存储在Web服务器上,通常就像静态HTML页面。但每当有人访问这个页面,FreeMarker介入,将纯HTML的模板动态替换 ${...}s与最新的内容,并将结果发送到访问者的Web浏览器。所以访问者的浏览器将收到类似HTML(即第一个例子。纯HTML没有FreeMarker指令),它不会察觉到FreeMarker在服务器上使用。(当然,模板文件存储在Web服务器上没有改变,替换只出现在Web服务器的响应)。

    注意,模板不包含编程逻辑来找出当前的客人是谁,或查询数据库获得最新的产品。要显示的数据准备FreeMarker外,通常通过部分写在一些“真实”编程语言(如Java)。模板作者不必知道这些值是如何计算的。事实上,这些值的计算方式可以完全改变了模板可以保持完全相同,而且,完全改变了页面的外观不会碰到任何东西,但模板。表示逻辑与业务逻辑的分离可以特别有用,当模板作者(设计师)和程序员都是不同的个体,但也有助于管理应用程序的复杂性,如果他们是同一个人。保持模板集中在陈述问题(视觉设计,布局和格式)是一个关键的有效使用像FreeMarker模板引擎。

    准备的全部数据称为数据模型的模板。模板作者而言,数据模型是一个树状结构(如硬盘上的文件夹和文件),而在这种情况下,可以可视化为:

    (根)
    |
    + -用户=“大乔”
    |
    + - latestProduct
    |
    + - url =“产品/ greenmouse.html”
    |
    + - name =“绿色鼠标”
    注意:

    注意:

    以上只是一个可视化;数据模型的文本格式,它从Java对象。对于Java程序员,根可能是一个Java对象 getUser() getLatestProduct()方法,或者一个Java Map "user""latestProducts"钥匙。同样的, latestProduct也许是一个Java对象 getUrl()getName()方法。

    早些时候,你从这个数据模型的选择值, user latestProduct.name表达式。如果我们继续类比数据模型就像一个文件系统,然后“(根)”,latestProduct对应的目录(文件夹), user, url name文件的目录。

    概括、模板和数据模型的需要FreeMarker生成输出(如第一次显示的HTML):

    模板+ 数据模型的= 输出

     

    FreeMarker几个亮点:

    • 强大的模板语言:条件块、迭代、作业、字符串和算术运算和格式化,宏和函数,包括其他模板,逃避在默认情况下(可选),和许多更多

    • 多用途和轻量级:零依赖,任何输出格式,可以从任何地方加载模板(可插入),许多配置选项

    • 国际化/ localization-aware:语言环境敏感的数量和日期/时间格式,局部模板的变化。

    • XML处理功能:删除XML DOM-s到数据模型的遍历,甚至以声明的方式处理它们

    • 通用的数据模型的:Java对象暴露在模板变量通过可插入适配器的树,这决定模板如何看待他们。

  • 相关阅读:
    Why Choose Jetty?
    Jetty 的工作原理以及与 Tomcat 的比较
    Tomcat设计模式
    Servlet 工作原理解析
    Tomcat 系统架构
    spring boot 打包方式 spring boot 整合mybaits REST services
    wireshark udp 序列号 User Datagram Protocol UDP
    Maven 的聚合(多模块)和 Parent 继承
    缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
    Mybatis解决sql中like通配符模糊匹配 构造方法覆盖 mybits 增删改
  • 原文地址:https://www.cnblogs.com/tk55/p/6064849.html
Copyright © 2011-2022 走看看