WEB开发技术框架利器之一 -- Beetl使用笔记

A、介绍

Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好。

B、优势

对于web应用来说,必须通过controller才能渲染模板,beetl也可以写完模板后,在未完成controller情况下,直接渲染模板此方法既可以作为通常的全栈式开发人员使用,也可以用于前端人员单独开发模板用。

Beetl容易与其他技术框架完成集成配置,默认提供了WebRender用于帮助web集成开发,所有内置的集成均基于此方法。如果你认为Beetl内置的各个web框架集成功能不够,你可以继承此类,或者参考此类源码重新写。

相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:

功能完备:同主流的java模板引擎相比,Beetl具有绝大多数功能。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。

非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易

超高的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍与freemaker,2倍于JSP),而且消耗较低的CPU

易于整合:Beetl能很容易的与各种web框架整合,如SpringMVC,JFinal,Struts,Nutz,Jodd,Servlet等。

支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。

扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包。

框架自身特点:

1. 自定义占位符和控制语句起始符号,这有利于减小模板语法对模板的倾入性,比如在html模板中,如果定义控制语句符号是<!--:和 -->,那么,大部分模板文件都能同过浏览器打开。有的使用者仅仅采用了单个符号@ 以及回车换号作为控制语句起始符号,这又能提高开发效率

2. 可单独测试的模板。无需真正的控制层和模型层,Beetl的模板就可以单独开发和测试

3. 同时支持较为松散的MVC和严格的MVC,如果在模板语言里嵌入计算表达式,复杂条件表达式,以及函数调用有干涉业务逻辑嫌疑,你可以禁止使用这些语法。

4. 强大的安全输出,通过安全输出符号!,能在模板变量,变量属性引用,for循环,占位符输出,try-catch中等各个地方提供安全输出,保证渲染正常

5. 模板变量:运行将模板的某一部分输出像js那样赋值个一个变量,稍后再处理。利用模板变量能完成非常复杂的页面布局(简单的布局可使用layout标签函数)

6. 类型推测,能在运行的时候推测模板变量类型,从而优化性能,也可以通过注解的方法显示的说明模板变量属性(这是非必须的,但有助于IDE自动提示功能)

7. 可插拔的设计,错误信息提示,模板引擎缓存机制,模板资源管理,本地调用的安全管理器,严格MVC限制,模板引擎本身都有默认的实现,但又完全可以自定义以适合特定需求

8. 增强的语法,如for-elsefor,select-case,安全输出符号! 等,这些语法特别适合模板开发

9. 性能超高,具有最快的模板解释引擎,同时,又有较低的CPU消耗。5-6倍于国内使用的Freemaker。适合各类模板应用,如代码生成工具,CMS系统,普通网站,超高访问量的门户系统,和富客户端JS框架整合的后台管理应用

C、处理流程

1、首先用户发送请求(HTMLFilter),前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;

2、HTMLFilter(SimpleCrossFilter),直接调用SimpleCrossFilter中的doFilter方法处理请求模板(主要是加载定义的伪数据模型,即定义的/WebROOT/values/common.html.var以及对应的var文件);

3、将加载定义的伪数据模型存放在session中;

4、将session中的数据渲染到指定的模板(即通过webrender渲染)

D、开发配置过程

1、在web.xml中配置请求拦截处理器(监听器)

          <filter>
             <description></description>
             <display-name>HTMLFilter</display-name>
             <filter-name>HTMLFilter</filter-name>
             <filter-class>org.beetl.sample.HTMLFilter</filter-class>
         </filter>
         <filter-mapping>
             <filter-name>HTMLFilter</filter-name>
             <url-pattern>*.html</url-pattern>
         </filter-mapping>

2、实现配置的过滤方法(监听器)

package org.beetl.sample;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
 
import org.beetl.core.GroupTemplate;
import org.beetl.ext.servlet.ServletGroupTemplate;
import org.beetl.ext.web.SimpleCrossFilter;
 
/**
 * Servlet Filter implementation classHTMLFilter
 */
publicclass HTMLFilter extends SimpleCrossFilter implements Filter {
 
         @Override
         public void init(FilterConfig arg0)throws ServletException {
                   
                   
         }
         
         public void doFilter(ServletRequestrequest, ServletResponse response, FilterChain chain) throws IOException,
         ServletException
         {
                   response.setContentType("text/html;charset=utf-8");
                   super.doFilter(request,response, chain);
         }
 
         @Override
         protected GroupTemplategetGroupTemplate() {
                   returnServletGroupTemplate.instance().getGroupTemplate();
         }
       
   
 
}

3、编制模板html(不是必须为html,也可以是其他后缀)

新建一个对应的伪模型文件(比如要测试模板WebRoot/views/common/header.html)。

4、创建伪数据模型

新建立WebRoot/values/common/header.html.var,values是监听器默认的伪模型的根目录。

var userList = {
    id : 2,
    name : "用户一"
    };

可以将一些公共的变量放到WebRoot/values/common.var里。监听器会先执行common.var,然后再执行common/header.html.var。

以上记录描述难免出现错误措辞,望各位勘正,谢谢。

时间: 2024-08-07 20:25:18

WEB开发技术框架利器之一 -- Beetl使用笔记的相关文章

WEB开发技术框架利器之一 -- JFinal使用笔记

介绍 JFinal是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful. 在拥有Java语言所有优势的同时再拥有ruby.python.php等动态语言的开发效率! JFinal采用微内核全方位扩展架构,全方位是指其扩展方式在空间上的表现形式.JFinal由Handler.Interceptor.Controller.Render.Plugin五大部分组成. JFinal架构十分简单,顶层是一个责任链模式变

WEB开发技术框架利器之一 -- Spring MVC

A.介绍: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. Spring Web MVC也是服务到工作者模式的实现,但进行可优化.前端控制器是DispatcherServlet:应用控制器其实拆为处理器映射器(Handler Mapping)进行处理

Web开发技术发展历史

Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互联网".Web是World Wide Web的简称,中文译为万维网."万维网"和我们经常说的"互联网"是两个联系极其紧密但却不尽相同的概念.今天"互联网"三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商

Web开发与设计之Google兵器谱-Web开发与设计利器

Web开发与设计之Google兵器谱-Web开发与设计利器 博客分类: Java综合 WebGoogleAjaxChromeGWT 笔者是个Java爱好者也是用Java进行web开发的工作者.平时笔者最喜欢的浏览器就是Firefox,因为它能带个笔者很多IE所不具备的优秀调试功能,说心里话笔者一直觉得MS貌似很不重视浏览器.无论功能还是性能,IE在笔者心里基本都是垃圾...今天偶然看到一篇介绍利用Google提供的免费用具进行Web开发与设计的文章,十分经典摘过来和大家分享下: Google 的

转Web开发的发展史---Web开发技术的演变

转自:http://blog.csdn.net/zzzkk2009/article/details/9849431 在接下来的几个月时间里,我打算写一系列关于完整web开发的文章.这第一篇文章虽然有所粗略,但也能够充分概括了在之前15年或者更久的时间里web应用程序如何进行演变.并且最后我会囊括下这段时间内所写的相关技术. 在过去的美好日子里,我们使用的是简单的web页面(包括动态gif图片!).作为精美设计的典范,苹果有着这样的一个网站: 在那时,Web开发还比较简单,开发者经常会去操作web

谷歌 Web 开发技术变迁史与踩坑史

文章的作者 CJ 是 Google 八年的资深工程师,现回国创办了在线协作文档「一起写」,这篇文章也是他与 geek 范的同事们在「一起写」协作完成的.点击 NEXT 产品集「Google 开源项目」,完整查看文中提到的技术与开源项目. 过去十几年来, Web 开发技术从最初的纯 HTML 到 CGI.PHP / JSP / ASP.Ajax.Rails.Node.js,已经发展到了一个非常成熟的阶段.去年的 Google I/O,谷歌开发者中心推出了关于 Web 开发的最佳实践手册:而今年的

《Tomcat与Java Web开发技术详解》思维导图

越想构建上层建筑,就越觉得底层基础很重要.补课系列. 书是良心书,就是太基础了,正适合补课. [纯文字版] Tomcat与Java Web开发技术详解 Servlet Servlet的生命周期 初始化 1Servlet容器加载Servlet类 2Servlet容器创建ServletConfig,初始化配置信息 3Servlet容器创建Servlet对象 4Servlet容器调用Servlet对象的init(ServletConfig) 时机:首次被请求或配置了<load-on-startup>

原创简化Web开发的框架 - JSPTagEx

在博客蛰伏了一年多,该写点东西了:) JSPTagEx的初衷在于简化Web开发,利用maven管理,极少的第三方依赖,代码量也极少,首先让我们花一点时间了解一下它在简化Web开发方面的表现. 如果您对框架感兴趣,欢迎加入Q-Q群讨论:431040030(Q-Q群号,请注明:Java等备注),该框架将再完善下准备开源,欢迎给我们提需求和意见,一经采纳,分享源码:) Maven ArcheType 默认提供最常用的Java Maven ArcheType,根据不同业务场景,拉取原型项目,如J2EE应

2019年web前端开发技术框架有哪些

2019年八大Web开发趋势,如果你想要学习web前端技术,想要走web前端之路,那就从学好web前端,了解web前端开始吧! 对于知道web前端的人都知道,随着互联网的兴起,web前端框架层出不穷,H5开发模式也越来越流行,应之而来的就是web大前端时代.为了让更多的人了解web前端技术,我们特意分享了一些web技术,一起来看看吧! 每一年各种前端技术也应运而生,快速掌握最新的前端技术也是每一个开发者不可或缺的一门技能.如今也是新的一年的到来,去年,也就是2018年,大家也都知道,很多前端技术