logo资料库

Beetl2.9 中文文档.pdf

第1页 / 共92页
第2页 / 共92页
第3页 / 共92页
第4页 / 共92页
第5页 / 共92页
第6页 / 共92页
第7页 / 共92页
第8页 / 共92页
资料共92页,剩余部分请下载后查看
1. 什么是Beetl
2. 基本用法
2.1. 安装
2.2. 从GroupTemplate开始
2.3. 模板基础配置
2.4. 模板资源加载器
2.4.1. 字符串模板加载器
2.4.2. 文件资源模板加载器
2.4.3. Classpath资源模板加载器
2.4.4. WebApp资源模板加载器
2.4.5. 自定义资源模板加载器
2.5. 定界符与占位符号
2.6. 注释
2.7. 临时变量定义
2.8. 全局变量定义
2.9. 共享变量
2.10. 模板变量
2.11. 引用属性
2.12. 属性赋值
2.13. 算数表达式
2.14. 逻辑表达式
2.15. 循环语句
2.15.1. for-in
2.15.2. for(exp;exp;exp)
2.15.3. while
2.15.4. elsefor
2.16. 条件语句
2.16.1. if else
2.16.2. switch-case
2.16.3. select-case
2.17. try-catch
2.18. 虚拟属性
2.19. 函数调用
2.20. 安全输出
2.20.1. 变量是否存在
2.20.2. 安全输出表达式
2.21. 格式化
2.22. 标签函数
2.23. HTML标签
2.24. 绑定变量的HTML标签
2.25. 直接调用java方法和属性
2.26. 严格MVC控制
2.27. 指令
2.28. 类型声明
2.29. 错误处理
2.30. Beetl小工具
2.31. 琐碎功能
3. 高级功能
3.1. 配置GroupTemplate
3.2. 自定义方法
3.2.1. 实现Function
3.2.2. 使用普通的java类
3.2.3. 使用模板文件作为方法
3.3. 自定义格式化函数
3.4. 自定义标签
3.4.1. 标签函数
3.5. 自定义虚拟属性
3.6. 使用额外的资源加载器
3.7. 自定义资源加载器
3.8. 使用CompositeResourceLoader
3.9. 自定义错误处理器
3.10. 自定义安全管理器
3.11. 注册全局共享变量
3.12. 布局
3.13. 性能优化
3.14. 分布式缓存模板
3.15. 定制输出
3.16. 定制模板引擎
3.17. 直接运行Beetl脚本
3.18. 模板校验
4. Web集成
4.1. Web提供的全局变量
4.2. 集成技术开发指南
4.3. Servlet集成
4.4. SpringMVC集成
4.5. SpringMVC集成高级
4.6. Spring Boot集成
4.7. Jodd集成
4.8. JFinal3.0&JFinal2.o集成方案
4.9. Nutz集成
4.10. Struts2集成
4.11. MVC分离开发
4.12. 整合ajax的局部渲染技术
4.13. 在页面输出错误提示信息
5. 附录
5.1. 内置方法
5.1.1. 常用内置方法
5.1.2. 字符串相关方法
5.1.3. 数组相关方法
5.1.4. 正则表达式相关方法
5.1.5. Spring 相关函数
5.1.6. Spring security
5.1.7. shiro
5.2. 内置格式化方法
5.3. 内置标签函数
5.4. 性能优化的秘密
5.5. Eclipse 插件
5.6. 性能测试对比
Beetl2.9 中文文档 作者:李家智 目 录 1. 什么是BEETL .............................................................................................................................. 3 2. 基本用法 ...................................................................................................................................... 5 2.1. 安装 2.2. 从GROUPTEMPLATE开始 2.3. 模板基础配置 2.4. 模板资源加载器 2.4.1. 字符串模板加载器 2.4.2. 文件资源模板加载器 2.4.3. Classpath资源模板加载器 2.4.4. WebApp资源模板加载器 2.4.5. 自定义资源模板加载器 .............................................................................................................................................. 5 .............................................................................................................. 6 .............................................................................................................................. 7 ........................................................................................................................ 10 ............................................................................................................. 10 ......................................................................................................... 10 .................................................................................................. 10 ..................................................................................................... 11 ..................................................................................................... 11 .................................................................................................................... 11 ............................................................................................................................................ 12 ............................................................................................................................ 13 ............................................................................................................................ 13 .................................................................................................................................... 14 .................................................................................................................................. 14 .................................................................................................................................. 15 .................................................................................................................................. 16 .............................................................................................................................. 16 .............................................................................................................................. 16 .................................................................................................................................. 17 ................................................................................................................................... 17 ................................................................................................................. 18 ................................................................................................................................... 18 ................................................................................................................................. 18 .................................................................................................................................. 19 .................................................................................................................................. 19 ......................................................................................................................... 19 .......................................................................................................................... 19 ................................................................................................................................. 20 .................................................................................................................................. 21 .................................................................................................................................. 21 .................................................................................................................................. 23 ................................................................................................................... 25 ............................................................................................................... 25 2.5. 定界符与占位符号 2.6. 注释 2.7. 临时变量定义 2.8. 全局变量定义 2.9. 共享变量 2.10. 模板变量 2.11. 引用属性 2.12. 属性赋值 2.13. 算数表达式 2.14. 逻辑表达式 2.15. 循环语句 2.15.1. for-in 2.15.2. for(exp;exp;exp) 2.15.3. while 2.15.4. elsefor 2.16. 条件语句 2.16.1. if else 2.16.2. switch-case 2.16.3. select-case 2.17. TRY-CATCH 2.18. 虚拟属性 2.19. 函数调用 2.20. 安全输出 2.20.1. 变量是否存在 2.20.2. 安全输出表达式
2.21. 格式化 2.22. 标签函数 2.23. HTML标签 2.24. 绑定变量的HTML标签 2.25. 直接调用JAVA方法和属性 2.26. 严格MVC控制 2.27. 指令 2.28. 类型声明 2.29. 错误处理 2.30. BEETL小工具 2.31. 琐碎功能 ...................................................................................................................................... 26 .................................................................................................................................. 27 ................................................................................................................................ 28 ........................................................................................................... 30 ....................................................................................................... 31 ......................................................................................................................... 32 .......................................................................................................................................... 32 .................................................................................................................................. 33 .................................................................................................................................. 33 ............................................................................................................................. 34 .................................................................................................................................. 35 3. 高级功能 .................................................................................................................................... 35 3.1. 配置GROUPTEMPLATE 3.2. 自定义方法 3.3. 自定义格式化函数 3.4. 自定义标签 3.4.1. 标签函数 3.2.1. 实现Function 3.2.2. 使用普通的java类 3.2.3. 使用模板文件作为方法 ................................................................................................................ 35 ................................................................................................................................ 37 ...................................................................................................................... 37 .............................................................................................................. 38 ..................................................................................................... 38 .................................................................................................................... 39 ................................................................................................................................ 39 ............................................................................................................................. 40 ........................................................................................................................ 40 ............................................................................................................ 41 .................................................................................................................... 42 ........................................................................................... 45 .................................................................................................................... 46 .................................................................................................................. 47 .................................................................................................................. 47 .......................................................................................................................................... 48 .................................................................................................................................. 49 ...................................................................................................................... 49 .................................................................................................................................. 49 .......................................................................................................................... 50 ................................................................................................................ 54 .................................................................................................................................. 54 3.5. 自定义虚拟属性 3.6. 使用额外的资源加载器 3.7. 自定义资源加载器 3.8. 使用COMPOSITERESOURCELOADER 3.9. 自定义错误处理器 3.10. 自定义安全管理器 3.11. 注册全局共享变量 3.12. 布局 3.13. 性能优化 3.14. 分布式缓存模板 3.15. 定制输出 3.16. 定制模板引擎 3.17. 直接运行BEETL脚本 3.18. 模板校验 4. WEB集成 .................................................................................................................................... 55 4.1. WEB提供的全局变量 4.2. 集成技术开发指南 4.3. SERVLET集成 4.4. SPRINGMVC集成 4.5. SPRINGMVC集成高级 4.6. SPRING BOOT集成 4.7. JODD集成 4.8. JFINAL3.0&JFINAL2.O集成方案 ................................................................................................................. 55 .................................................................................................................... 56 ............................................................................................................................... 59 ........................................................................................................................ 59 ................................................................................................................ 60 ....................................................................................................................... 64 ..................................................................................................................................... 66 ................................................................................................. 67
4.9. NUTZ集成 4.10. STRUTS2 集成 4.11. MVC分离开发 4.12. 整合AJAX的局部渲染技术 4.13. 在页面输出错误提示信息 .................................................................................................................................... 71 ............................................................................................................................ 72 .......................................................................................................................... 73 ...................................................................................................... 75 ...................................................................................................... 78 5. 附录 ............................................................................................................................................ 78 5.1. 内置方法 5.1.1. 常用内置方法 5.1.2. 字符串相关方法 5.1.3. 数组相关方法 5.1.4. 正则表达式相关方法 5.1.5. Spring 相关函数 5.1.6. Spring security 5.1.7. shiro .................................................................................................................................... 78 ..................................................................................................................... 78 ................................................................................................................. 80 ..................................................................................................................... 81 ......................................................................................................... 81 ................................................................................................................. 81 ..................................................................................................................... 83 ...................................................................................................................................... 84 ........................................................................................................................ 84 ............................................................................................................................ 84 ........................................................................................................................ 86 .............................................................................................................................. 87 ............................................................................................................................ 88 5.2. 内置格式化方法 5.3. 内置标签函数 5.4. 性能优化的秘密 5.5. ECLIPSE 插件 5.6. 性能测试对比 1. 什么是 Beetl Beetl 目前版本是 2.9.3,相对于其他 java 模板引擎,具有功能齐全,语法直观,性能超高,以 及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。 总得来说,它的特性如下: • 功能完备:作为主流模板引擎,Beetl 具有相当多的功能和其他模板引擎不具备的功 能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的 CMS 管理系统都适合。Beetl 本身还具有很多独特功能来完成模板编写和维护,这是其他 模板引擎所不具有的。 • 非常简单:类似 Javascript 语法和习俗,只要半小时就能通过半学半猜完全掌握用法。 拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持 html 标签,使得开发 CMS 系统比较容易 • 超高的性能:Beetl 远超过主流 java 模板引擎性能(引擎性能 5-6 倍与 freemaker,2 倍于 JSP。参考附录),而且消耗较低的 CPU。 • 易于整合:Beetl 能很容易的与各种 web 框架整合,如 Spring MVC,JFinal,Struts,
Nutz,Jodd,Servlet 等。 • 支持模板单独开发和测试,即在 MVC 架构中,即使没有 M 和 C 部分,也能开发和 测试模板。 • 扩展和个性化:Beetl 支持自定义方法,格式化函数,虚拟属性,标签,和 HTML 标签. 同时 Beetl 也支持自定义占位符和控制语句起始符号也支持使用者完全可以打 造适合自己的工具包。 • 可以扩展为脚本引擎,规则引擎,能定制引擎从而实现高级功能。 关于性能 在使用 FastRuntimeEngine 情况下,通过与主流模板引擎 Freemarker,Vecloity 以及 JSP 对比, Beetl6 倍于 Freemarker,2 倍于 JSP。这是因为宏观上,通过了优化的渲染引擎,IO 的二进 制输出,字节码属性访问增强,微观上,通过一维数组保存上下文 Context,静态文本合并处 理,通过重复使用字节数组来防止 java 频繁的创建和销毁数组,还使用模板缓存,运行时 优化等方法。详情参考附录 独特功能 Beetl 有些功能是发展了 10 多年的模板引擎所不具备的,这些功能非常利于模板的开发和维 护,如下 1. 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如 在 html 模板中,如果定义控制语句符号是,那么,大部分模板文件都能通 过浏览器打开。有的使用者仅仅采用了单个符号@ (或者单个符号“~”)以及回车 换号作为控制语句起始符号,这又能提高开发效率 2. 可单独测试的模板。无需真正的控制层和模型层,Beetl 的模板就可以单独开发和测 试 3. 同时支持较为松散的 MVC 和严格的 MVC,如果在模板语言里嵌入计算表达式,复 杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。 4. 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for 循环, 占位符输出,try-catch 中等各个地方提供安全输出,保证渲染正常。 5. 模板变量:运行将模板的某一部分输出像 js 那样赋值给一个变量,稍后再处理。利 用模板变量能完成非常复杂的页面布局(简单的布局可使用 include,layout 标签函数) 6. 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的 方法显示的说明模板变量属性(这是非必须的,但有助于 IDE 自动提示功能)
7. 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安 全管理器,严格 MVC 限制,模板引擎本身都有默认的实现,但又完全可以自定义以 适合特定需求 8. 增强的语法,如 for-elsefor, select-case,安全输出符号!,省略的三元表达式 等,这些 语法特别适合模板开发 9. 局部渲染技术,结合现在 js 的 ajax 技术。 10. 性能超高,具有最快的模板解释引擎,同时,又有较低的 CPU 消耗。5-6 倍于国内使 用的 Freemaker。适合各类模板应用,如代码生成工具,CMS 系统,普通网站,超 高访问量的门户系统,和富客户端 JS 框架整合的后台管理应用 小白如何开始 • 需要通读基本用法,大部分都是讲解语法,而语法跟 js 很接近,所以可以快速预览, 但 Beetl 是针对模板设计, 所以像安全输出,标签和 html 标签,全局变量,临时变 量和共享变量,布局技术,以及直接调用 java 代码等还需要认真读一遍。 • 如果从事 web 开发,还需要阅读 web 集成里的第一节“web 提供的全局变量”,如果 web 里还使用 ajax 技术,可以阅读“整合 ajax 的局部渲染技术”。 • 包含有spring,jfinal,jodd,struts 等demo可以作为参考学习 用https://git.oschina.net/xiandafu 任何问题,都可以在ibeetl.com 社区上提问。目前答 复率是 100%,提问需要详细说明自己的期望,出错信息,附上代码或者图片 联系作者 作者:闲.大赋 (李家智)等(参考附录查看代码贡献者) QQ 技术交流群:219324263(满) 636321496 邮件:xiandafu@126.com Beetl社区:bbs.ibeetl.com 源码主页:https://github.com/javamonkey/beetl2.0 在线体验和代码分享 http://ibeetl.com/beetlonline/ 2. 基本用法 2.1. 安装
如果使用 maven,请使用如下坐标 com.ibeetl beetl 2.9.3 如果非maven工程,直接下载http://git.oschina.net/xiandafu/beetl2.0/attach_files 2.2. 从 GroupTemplate 开始 StringTemplateResourceLoader resourceLoader = new StringTemplateResourceLoader(); Configuration cfg = Configuration.defaultConfiguration(); GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); Template t = gt.getTemplate("hello,${name}"); t.binding("name", "beetl"); String str = t.render(); System.out.println(str); Beetl 的核心是 GroupTemplate,是一个重量级对象,实际使用的时候建议使用单模式创建, 创建 GroupTemplate 需要俩个参数,一个是模板资源加载器,一个是配置类,模板资源加载 器 Beetl 内置了 6 种,分别是 • StringTemplateResourceLoader:字符串模板加载器,用于加载字符串模板,如本例 所示 • FileResourceLoader:文件模板加载器,需要一个根目录作为参数构造,传入 getTemplate 方法的 String 是模板文件相对于 Root 目录的相对路径 • ClasspathResourceLoader:文件模板加载器,模板文件位于 Classpath 里 • WebAppResourceLoader:用于 webapp 集成,假定模板根目录就是 WebRoot 目录, 参考 web 集成章 • MapResourceLoader : 可以动态存入模板 • CompositeResourceLoader 混合使用多种加载方式 代码第 5 行将变量 name 传入模板里,其值是“Beetl”。 代码第 6 行是渲染模板,得到输出, template 提供了多种获得渲染输出的方法,如下 • • • template.render() 返回渲染结果,如本例所示 template.renderTo(Writer) 渲染结果输出到 Writer 里 template.renderTo(OutputStream ) 渲染结果输出到 OutputStream 里
1. Beetl 支持为模板自定义定界符和占位符,如本例子采用的默认占位符号${} 2. 占位符用于输出变量。如果想引用变量,可直接使用变量名,这不同于 Velocity, Thymleaf 等其他模板语言 3. 如果不想写代码直接体验Beetl,可以使用http://ibeetl.com/beetlonline/ 2.3. 模板基础配置 Beetl 提供不但功能齐全,而且还有很多独特功能,通过简单的配置文件,就可以定义众多 的功能,默认情况下,Configuration 类总是会先加载默认的配置文件(位于 /org/beetl/core/beetl-default.properties,作为新手,通常只需要关注 3,4,5,6 行定界符的配置, 以及 12 行模板字符集的配置就可以了,其他配置会在后面章节陆续提到,同时,对于 Spring 等框架,有些配置将会被这些框架的配置覆盖,需要参考后面章节)下,其内容片断如下: #默认配置 ENGINE=org.beetl.core.engine.DefaultTemplateEngine DELIMITER_PLACEHOLDER_START=${ DELIMITER_PLACEHOLDER_END=} DELIMITER_STATEMENT_START=<% DELIMITER_STATEMENT_END=%> DIRECT_BYTE_OUTPUT = FALSE HTML_TAG_SUPPORT = true HTML_TAG_FLAG = # HTML_TAG_BINDING_ATTRIBUTE = var NATIVE_CALL = TRUE TEMPLATE_CHARSET = UTF-8 ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager MVC_STRICT = FALSE #资源配置,resource 后的属性只限于特定 ResourceLoader RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader #classpath 根路径 RESOURCE.root= / #是否检测文件变化,开发用 true 合适,但线上要改为 false RESOURCE.autoCheck= true #自定义脚本方法文件的 Root 目录和后缀
RESOURCE.functionRoot = functions RESOURCE.functionSuffix = html #自定义标签文件 Root 目录和后缀 RESOURCE.tagRoot = htmltag RESOURCE.tagSuffix = tag ##### 扩展 ############## ## 内置的方法 FN.date = org.beetl.ext.fn.DateFunction ...... ##内置的功能包 FNP.strutil = org.beetl.ext.fn.StringUtil ...... ##内置的默认格式化函数 FTC.java.util.Date = org.beetl.ext.format.DateFormat ..... ## 标签类 TAG.include= org.beetl.ext.tag.IncludeTag 这配置文件整体说明了 Beetl 提供的功能 第 2 行配置引擎实现类,默认即可 第 3,4 行指定了占位符号,默认是${ },也可以指定为其他占位符。 第 5,6 行指定了语句的定界符号,默认是<% %>,也可以指定为其他定界符号 第 7 行指定 IO 输出模式,默认是 FALSE,即通常的字符输出,在考虑高性能情况下,可以设 置成 true。详细请参考高级用法 第 8,9 行指定了支持 HTML 标签,且符号为#,默认配置下,模板引擎识别<#tag >这 样的类似 html 标签,并能调用相应的标签函数或者模板文件。你也可以指定别的符号,如 bg: 则识别
分享到:
收藏