FreeMarker使用说明关键字: freemarker FrFreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 l FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 l 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) l FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 l FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 l FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 l FreeMarker是免费的 1、通用目标 l 能够生成各种文本:HTML、XML、RTF、Java源代码等等 l 易于嵌入到你的产品中:轻量级;不需要Servlet环境 l 插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等 l 你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器 2、强大的模板语言 l 所有常用的指令:include、if/elseif/else、循环结构 l 在模板中创建和改变变量 l 几乎在任何地方都可以使用复杂表达式来指定值 l 命名的宏,可以具有位置参数和嵌套内容 l 名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突 l 输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换 3、通用数据模型 l FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示 l 你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰 4、为Web准备 l 在模板语言中内建处理典型Web相关任务(如HTML转义)的结构 l 能够集成到Model2 Web应用框架中作为JSP的替代 l 支持JSP标记库 l 为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员 5、智能的国际化和本地化 l 字符集智能化(内部使用UNICODE) l 数字格式本地化敏感 l 日期和时间格式本地化敏感 l 非US字符集可以用作标识(如变量名) l 多种不同语言的相同模板 6、强大的XML处理能力 l <#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树 l 在模板中清楚和直觉的访问XML对象模型 FreeMarker设计指南(1) -------------------------------------------------------------------------------- 1、快速入门 (1)模板 + 数据模型 = 输出 l FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念 l 他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据 l 经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的 l 在这里,你可以在HTML(或其它要输出的文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码 l 下面是一个例子:
Welcome ${user}!
Our latest product: ${latestProduct.name}! l 这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template) l 至于user、latestProduct.url和latestProduct.name来自于数据模型(data model) l 数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成 l 模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型 l 下面是一个可能的数据模型: (root) | +- user = "Big Joe" | +- latestProduct | +- url = "products/greenmouse.html" | +- name = "green mouse"l 数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在) l 当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:
Welcome Big Joe!
Our latest product: green mouse! (2)数据模型 l 典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子: (root) | +- animals | | | +- mouse | | | | | +- size = "small" | | | | | +- price = 50 | | | +- elephant | | | | | +- size = "large" | | | | | +- price = 5000 | | | +- python | | | +- size = "medium" | | | +- price = 4999 | +- test = "It is a test" | +- whatnot | +- because = "don't know"l 类似于目录的变量称为hashes,包含保存下级变量的唯一的查询名字 l 类似于文件的变量称为scalars,保存单值 l scalars保存的值有两种类型:字符串(用引号括起,可以是单引号或双引号)和数字(不要用引号将数字括起,这会作为字符串处理) l 对scalars的访问从root开始,各部分用“.”分隔,如animals.mouse.price l 另外一种变量是sequences,和hashes类似,只是不使用变量名字,而使用数字索引,如下面的例子: (root) | +- animals | | | +- (1st) | | | | | +- name = "mouse" | | | | | +- size = "small" | | | | | +- price = 50 | | | +- (2nd) | | | | | +- name = "elephant" | | | | | +- size = "large" | | | | | +- price = 5000 | | | +- (3rd) | | | +- name = "python" | | | +- size = "medium" | | | +- price = 4999 | +- whatnot | +- fruits | +- (1st) = "orange" | +- (2nd) = "banana"l 这种对scalars的访问使用索引,如animals[0].name (3)模板 l 在FreeMarker模板中可以包括下面三种特定部分: Ø ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代 Ø FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述) Ø 注释:包含在<#--和-->(而不是<!--和-->)之间 l 下面是一些使用指令的例子: Ø if指令 <#if animals.python.price < animals.elephant.price> Pythons are cheaper than elephants today.<#else> Pythons are not cheaper than elephants today. Ø list指令
We have these animals:
Name
Price <#list animals as being>
${being.name} |
${being.price} Euros |
输出为: Freemarker指令 | Log4J使用说明
下面附件图片:可供参考
- 大小: 79.9 KB
分享到:
相关推荐
基于SpringBoot+FreeMarker+MyBatis+ExtJs实现的一个通用后台管理系统,界面美观,适合快速迭代开发 项目说明 技术栈: SpringBoot MyBatis Redis MySQL FreeMarker ExtJs 基于SpringBoot+FreeMarker+MyBatis+...
1、基于SpringBoot+FreeMarker+MyBatis+ExtJs实现的一个通用后台管理系统源码(适合快速迭代开发).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计...
一、项目运行 环境配置: Jdk1.8 + Tomcat8.0 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) ...Springboot + SpringMVC + MyBatis + FreeMarker + JavaScript + JQuery + Ajax + maven等等。
总结来说,本项目是一个基础的Web开发框架,结合了SpringMVC的MVC设计模式、Spring Data JPA的数据访问层、Hibernate的ORM能力以及FreeMarker的模板引擎,同时还实现了环境配置的灵活切换,为开发高效、可维护的Web...
标题中的"springboot+freemarker+druid+mysql"是一个综合性的项目组合,涉及到四个主要的技术组件。这里,我们将深入探讨每个技术及其在实际应用中的作用。 **SpringBoot** SpringBoot是由Pivotal团队提供的全新...
FreeMarker和Apache POI是两种在Java开发中广泛使用的工具,它们在处理文档生成和操作方面各有专长。本文将详细介绍这两个库如何协同工作来创建带有图片的Word文档。 **FreeMarker** FreeMarker是一个模板引擎,...
本系统是基于FreeMarker+SpringBoot+Mybatis实现的大学教室管理系统。主要实现对教室的预约、教学楼管理、教室管理、教室上课时间管理、班级管理、学生,老师,辅导员,楼长管理。 管理员登录页面:...
springmvc+mybatis+redis+shiro+bootstrap+freemarker+jsp+logback框架,几乎集合了所有企业开发技术,可以下载下来直接使用,任务调度,登陆拦截应有尽有
员工:登录、修改个人信息、请假(申请请假)、日常办公(工作日志、任务管理、日常管理)、通讯录查阅、档案资料管理(个人档案、公共档案、下载、上传)、查阅消息、邮件管理(收件箱、发邮件、已发邮件列表)、...
个关于freemarker+webwork+spring+ibatis的demo文档
model.addAttribute("message", "欢迎使用FreeMarker+Spring+Maven"); return "index"; } } ``` 5. **运行及测试**:启动Tomcat服务器,访问`http://localhost:8080/index`,如果一切配置正确,你将看到由...
SSM(Spring、SpringMVC、...以上就是"freemarker+ssm+maven整合"项目的主要知识点。这个项目不仅展示了如何将这些组件整合在一起,还提供了实际操作的参考,对于学习和理解Java Web开发的SSM架构有着重要的实践意义。
搭建项demo(maven项目[freemarker+easyui+spring+springmvc+mybatic]) ,包括各种功能,技术简介,要自己运行才行 有搭建的整个项目,1,有发短信验证码功能,paypal支付功能,登陆验证功能,excel导入导出功能 ...
总结起来,`Freemarker+Action+Word`的组合在Web开发中提供了动态生成Word文档的能力,尤其适用于需要根据用户输入自定义报告的情况。这种技术方案能够提高效率,简化复杂的文档生成流程,使得开发人员可以专注于...
本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...
标题 "大型商城网站springmvc+freemarker+velocity+ibatis" 暗示了这是一个基于SpringMVC、Freemarker、Velocity和iBatis框架构建的电子商务平台。这个项目可能是一个B2C(Business-to-Consumer)类型的商城,允许...
"freemarker+fckeditor+struts+hibernate" 这个标题揭示了一个基于Java的Web开发项目,它整合了四个关键的技术组件:FreeMarker模板引擎,FCKeditor富文本编辑器,Struts MVC框架,以及Hibernate持久化框架。...
JEECMS使用目前java主流技术架构:hibernate3+struts2+spring2+freemarker。AJAX使用jquery和json实现。视图层并没有使用传统的JSP技术,而是使用更为专业、灵活、高效freemarker。 数据库使用MYSQL,并可支持orcale...
技术选型方面,该项目是一个`SpringBoot`的单体应用,项目使用`SpringBoot2`框架快速开发,数据访问层使用`Mybatis`框架,页面渲染引擎使用`Freemarker`,页面样式使用`Layui`,日志方面选用的是`logback`,统计报表...
项目介绍 本系统分为管理员、医生、患者三种角色; 管理员角色包含以下功能: ...2. 前端:freemarker+CSS+JavaScript+jquery+layui 使用说明 1. 使用Navicat或者其它工具,在mysql中创建对应名称