• VMC Injection


    VMC Injection是一个Java开源模板引擎,利用它可以很容易将任何Java数据结构(如:JDBBC、POJO、HashMap等)注入到文本(HTML/XML等)模板中。

    A revolutionary new library that enables any Java data structure (JDBC ResultSets, Plain Objects, HashTables etc) to be inserted into into any text-based format, such as HTML or XML. Its ideal for generating dynamic content for Servlets for websites or for generating XML files for Web Services.

    This allows for the the html/xml or other document to be worked on independantly from the person working on the data as the document is completely separate from the code.

    This is achieved by defining three specialised tags:

        * igoup
        * irow
        * iwindow


    which are inserted into a html/xml/txt file to make it into a template and injection library does the rest.
    Advanced Features

        * Formatting with Java's standard formatting class
        * Extensible to any Java object through an interface


    Example: Servlet/JDBC/HTML
    The following example prints out all the records in a JDBC ResultSet.

    ShowCustomer.html:

    <html>
    <body>
        <irow name="Customers">
            Id: #id
            Name: #name
            Address: #address
            Phone: #phone
            Email: #email
        </irow>
    </body>
    </html>

    ----------------------------------------------------------------------------------------

    ShowCustomer.java:

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException, IOException {

       
        // Target
        InjectionTarget htmlTarget = new HTMLInjectionTarget("ShowCustomer.html");
               
        // Data
        ResultSet rs = getCustomers();
       
        HashMap injections = new HashMap();
       
        injections.put("Customers", new SQLInjection(rs));
       
        // Stream
       
        response.setContentType(CONTENT_TYPE);
        OutputStream out = response.getOutputStream();
       
        InjectionStreamer injectionStreamer;
        injectionStreamer = new InjectionStreamer(htmlTarget);
        injectionStreamer.streamTo(out, injections);
    }

    点击次数   官方主页【官方主页】   下载地址【下载地址】

    网友留言/评论

    我要留言/评论

    相关开源项目

    Jamon:Jamon是一个Java文本模板引擎,用于生成动态HTML, XML,或任何基于文本的内容。它有一个丰富的功能集,支持封装,参数化,功能分解,表达逻辑重用。模板声明它们要求生成的参数,包括动态模板内容("fragments"),并被翻译成带有公有方法的Java类,它的符号反映了在模板中声明的参数。
    smarty4j: smarty4j是一个smarty for java的模板引擎,该引擎是将smarty模板从php上移植过来,需要asm-3.0.jar。
    JLoom:JLoom是一个采用类似于JSP语法的模板引擎。参数可以是任何Java类型,甚至是泛型(generic)。JLoom还提供一个Eclipse插件来辅助开发。
    Xtempore: Xtempore是一个轻级量、模块化、强大基于XML的模板语言和工具集。用于将一个Java对象模型结合XML文档模板生成另一个新的XML文档。
    CommonTemplate:CommonTemplate是一个模板引擎,用于解释CTL模板语言,可在多种运行时环境下使用;其主要目标是作为JSP,ASP.Net等的替代方案,以保证用简单的语法,良好的结构,不混杂业务逻辑的方式书写页面;也可以作为动态文本生成工具,生成HTML、XML、Mail、Java源代码或其它文本等。
    二、CommonTemplate特性:
    1.只有一个语法规则:$指令名{表达式},使用更简单,更统一。
    2.支持语法外套,可以在Dreamwear下正常使用WYSWYG,并且语法外套也是可扩展的。
    3.微核理念,高度可扩展,除了核心API,其它逻辑相关处理都是外置的,包括所有指令及表达式,标准的 for, if, else 等指令,以及 + - * / 等表达式,均可被替换。
    4.使用主控迭代器模式替代传统的被动访问器模式,引擎只负责将模板解析成指令树,其它所有处理均由扩展指令自身完成,给扩展指令以最大的控制权。(类似于StAX与SAX的区别)
    5.对已有不可变类(String,Number,Date等),属性扩展,采用open class思想。(类似javascript的prototype)
    6.支持宏引用及模板继承,更有利于模板组件化。
    7.内置的国际化支持,国际化信息处理更方便。
    8.多种优化措施,性能更优:
        (1) 采用针对特定语法写的低级专有DFA解析器解析,试验表明比使用通用抽象的BNF语法体系解析(Java中一般用JavaCC或AntLR)要快,因为BNF为了通用,考虑了太多因素,导致其效率降低,当然,BNF在处理复杂语法(比如要解析C/C++/Java等语法时)很有优势,但CommonTemplate的语法非常简单且统一,所以使用专有的低级解析器是比较好的选择。
        (2) 解析结果被表示成一个线程安全(不变类级)的指令树,单个实例可以在多线程中任意重复使用,避免使用重复解析或克隆等性能损耗。
        (3) 解析结果可以在内存中缓存起来,以减少解析次数及IO量,并且缓存策略是可扩展的。(已内置实现了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等缓存策略)
    Velocity:Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。 【VeloEclipse :Velocity在Eclipse平台下的一个辅助开发插件】
    Jostraca:Jostraca是一个代码生成工具包。它的模板可使用类似于JSP的语法来编写。CodeGenClipse是一个把该代码生成器集成到Eclipse v3.1.2+中的插件。
    WebMacro:WebMacro是一种Java开源的模板语言。对于表现web页面,它比JSP,PHP,与ASP效率更高。WebMacro是一些大网站后台的页面生成技术。
    Guglhupf XTE:Guglhupf XTE(XML Transformation Engine:XML转换引擎) 是一组用来转换XML文件的工具。它提供了一种比XSLT更简单的方式来转换XML。XTE不同于XSLT与Velocity这样的XML转换工具,它们都用特殊的语言来处理XML文件输入,然后把目标数据作为输出陈述.而XTE是以相反的方式进行它的模板是已经写在输出格式上的,而输入处理命令则是写在特殊的注释块中.它的模板文件采用Java代码编写.
    JByte:JByte基于java的模板引擎。它通常用于把Jsp或Servlet转换成HTML,也可以转换成其它格式比如:XML,RTF,WML,e-mail text,原代码, 配置文件。