zoukankan      html  css  js  c++  java
  • [页面模板框架对比] Apache Tiles VS Sitemesh

    1. 原理对比

    (1) Apache Tiles 顾名思义,Tile是瓷砖的意思,也就是说一个网页是由多个Tile组成的。

        用户通过访问一个页面的Apache Tiles定义名,就可以访问一个由定义文件中包含的页面组成的最终的JSP。

        如以下一个Apache Tiles定义文件:

    <tiles-definitions>
      <definition name="myapp.homepage" template="/layouts/classic.jsp">
        <put-attribute name="title" value="Tiles tutorial homepage" />
        <put-attribute name="header" value="/tiles/banner.jsp" />
        <put-attribute name="menu" value="/tiles/common_menu.jsp" />
        <put-attribute name="body" value="/tiles/home_body.jsp" />
        <put-attribute name="footer" value="/tiles/credits.jsp" />
      </definition>
    </tiles-definitions>

       其中首先告诉我们,这个定义的虚拟页面叫做myapp.homepage.

        用户通过 http://site:port/webname/myapp.homepage就能访问到一个页面。

        这个页面来自的模板是:/layouts/classic.jsp

        而模板中各个部位真正的值,则是下面的那些jsps。

        如下为原理图:

        (2) Sitemesh 的原理和 Apache Tiles截然不同,如果说Apache Tiles 中的原理是组装工厂的话,那么Sitemesh中的原理就是装饰工厂。

           这个概念比较抽象。

           Sitemesh通过一个过滤器来实现,当每个页面返回时,给它穿上衣服,打扮打扮,再返回。

          而Apache Tiles 则是通过一个组装器,在页面被请求后开始工作,组装完毕,返回,网站文件中也许根本没有这个请求的资源,而是临时按照定义拼凑起来的。

          如下为一个装饰定义文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <decorators defaultdir="/decorators">
        <decorator name="basic-theme" page="basic-theme.jsp">
            <pattern>/data/*</pattern>
        </decorator>
    </decorators>

         这个文件,定义了每个jsp被请求后,都穿上一件 叫 basic-theme.jsp的衣服。

         如下图为Sitemesh的原理图: (apage.jsp 穿上渲染页面后返回)

        

    2. 重用性比较

       Apache Tiles 基于定义,任何页面都可以被重组,使用起来组合千变万化。 而Sitemesh 也可以实现页面重用,通过渲染的方式。不过灵活性对比Apache Tiles还是稍微差点。

       比如 ABC三个子页面。

       ApacheTiles可以轻松定义:page1 = ABC page2= BAC page3=CAB ....

       而Sitemesh每个页面都要自己想清楚,谁该是主,谁该是装饰。我觉得这涉及到一个人的思维习惯。。。

       总结: 都具有高重用性,Apache Tiles相对于 Sitemesh来说,更加灵活。Apache Tiles 面向定义,Sitemesh 面向 Jsp。

       

    3. 轻量级性

       两者都是轻量级框架,不过Sitemesh 更胜一筹,原理简单,配置更加简单,而且非常容易和其他MVC框架结合。

    4. 用哪个?

        待实践。不过,我个人喜欢定义方式,千变万化,自己挑拣,所以我更钟爱Apache Tiles。Sitemesh 虽配置简单,但当页面复杂起来,需要好好理理谁主谁次。不过百度一大把说Sitemesh比Tiles好的,我感觉可能是Sitemesh入手简单吧,后面页面层次复杂了,很容易迷失。这个观点在Stackoverflow上得到了验证。老外看来也是比较prefer tiles。其原因还有,Apache Tiles 一直都在升级和维护。Apache倒的可能性不大。

  • 相关阅读:
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    94. Binary Tree Inorder Traversal
    odoo many2many字段 指定打开的form视图
    docker sentry 配置文件位置
    postgres 计算时差
    postgres 字符操作补位,字符切割
    postgres判断字符串是否为时间,数字
    odoo fields_view_get
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5090408.html
Copyright © 2011-2022 走看看