Spring Boot 2 精髓学习笔记(五)---Beetl 模板引擎(1)

本文详细介绍了Spring Boot 2中如何使用Beetl模板引擎,包括其特点、安装、配置、变量使用、表达式、控制语句、函数调用和安全输出。Beetl以其高性能、易整合和丰富的功能,成为模板引擎的优秀选择。通过配置文件可以自定义定界符号和占位符,并且支持模板单独开发和测试。在Spring Boot应用中,Beetl能够自动渲染以btl结尾的视图文件,同时提供全局变量、局部变量、共享变量和模板变量等不同类型的变量使用方式。
摘要由CSDN通过智能技术生成

本节介绍MVC 中的视图技术之模板引擎Beetl ,用于渲染模板。

一、Beetl模板引擎

Beetl是2010 年开发井维护至今的一个模板引擎,具有如下特点:

  • 功能完备。作为主流模板引擎,适用于各种应用场景,比如对响应速度有很高要求的大型网站,功能繁多的CMS 管理系统,以及代码生成器等。Beetl 本身还具有很多独特的功能来完成模板的编写和维护。
  • 语法和使用习俗简单: 类似JavaScript 语法和习俗, 但又专门为模板渲染定制,也支持HTML 标签, 使得开发CMS 系统变得比较容易。
  • 超高的性能。Beetl远超过主流Java 模板引擎性能, 引擎性能5~6 倍于Freemarker , 2倍于JSP 。
  • 易于整合。Beetl 能很容易地与各种Web 框架整合,如Spring MVC 、ACT ,国内的Nutz 和JFinal ,还有Struts 、Jodd 、Servlet 等。
  • 支持模板单独开发和测试。在MVC 架构中,即使没有M 和C 部分,也能开发和测试模板。
  • 扩展和个性化。Beet! 支持自定义方法、格式化函数、虚拟属性、标签和HTML 标签。同时也支持自定义占位符和控制语句起始符号。

1、安装Beetl

<dependency>
<groupid>com.ibeetl</groupid>
<artifactid>beetl-framework-starter</artifactid>
<version>1.1.15.RELEASE</version>
</dependency>

在Spring Boot 中, beetl-framework-starter 将自动配置以btl 结尾的所有视图,将自动使用Beetl渲染相应的resources/templates 目录下的视图文件。

2、设置定界符号和占位符

Beetl 支持自定义定界符号和占位符号, 默认使用<%%>作为定界符号,使用${}作为占位符号,也可以配置自己喜爱的占位符号, 常用的有:

@,和回车作为定界符号:
<??> , 类似PHP的符号:
<!一一# >,使用HTML 注释符号作为定界符号,加了一个#符号以区别正常的HTML注释。

可以通过配置文件来设置定界符号, 需要在resources 目录下创建一个beetl.properties 文件,

DELIMITER PLACEHOLDER START=${
DELIMITER PLACEHOLDER END=}
DELIMITER STATEMENT START =@
DELIMITER STATEMENT END=

本节后面都将采用“@”和“回车换行”作为定界符号,占位符使用传统的“${”和“}

3、配置Beetl

B eet I 为了提高渲染性能,会在渲染模板后, 缓存模板的语法解析结果, Beetl 每次渲染前都会检测模板文件是否更新, 如果已经更新,则重新解析模板。由于检测模板是否更新会有一次1/0 操作,因此线上系统可以取消检测,需要在appl ication . propert i es 中添加以下配置:

beetl-beetlsql.dev = false

Beetl 默认配置时自动检测模板是否变化,但有的IDE 并不会将resource/templates 目录
下的文件变化同步到Maven 工程的target 目录下,所以即使文件发生变化, Beetl 也检
测不到。如果出现这种情况,一个通用的办法是将resource 目录设定为src 目录,这样
resource 目录下的任何文件改变都会同步到target 目录下.

在Spring B oot 应用中,所有以btl 结尾的模板都会交给Beetl 模板引擎渲染,如果你的模板更喜欢以html 结尾,需要在application.properies 中添加以下配置项:

beetl.suffix = html

二、使用变量

1、全局变量

全局变量即通过Model 或者ModelAndView 传入的变量,可以在模板或者子模板中使用。在Controller 中通过Mo del 、ModelAndView ,或者直接使用request 设置的变量,都可以在模板中使用,比如:

ModelAndView view = new ModelAndView ("/index.btl");
view.addObject ("user", user) ;
return view;

然后可以在Beetl 模板中使用user 变量。${user . name}

对于Spring Boot 应用来说, Beet! 己经提供了以下默认的全局变量:

变量 说明
request 中所有的attribute 在模板中可以直接通过name 来引用,比如在Controller 层request.setAttribute (” user ”, user),则在模板中可以直接用$ {user.name}。这里也包括Model 或者ModelAndView 中的所有变量,都会成为模板的全局变量。
Session 提供了Session 会话 模板通过session [” name”]或者session . name 引用Session中的变量。注意, Session 并非Serviet 中的标准Session 对象。参考Servi et 来获取HTTPSession 。
request 标准的HTTPServletRequest ,可以在模板中引用request 属性( getter ),如 $ { request.requestURL}
parameter 读取用户提交的参数,如${ parameter.userld} o
ctxPath Web 应用中的ContextPath 。在Spring Boot 中, 应用默认是“/” 。通过application.properties 的属性server.context-path 可以配置。
servlet WebVariable 的实例,包含了HTTPSession 、HTTPServletRequest 、HTTPServletResponse 三个属性,模板中可以通过request 、response 、session 来引用,如$ { servlet.request.requestURL}
所有groupTemplate 的共享变量

2、局部变量

在模板中定义的变量,只能在当前模板中使用,无法在子模板中使用:

@var salary = user.salary
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值