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倒的可能性不大。

  • 相关阅读:
    GitHub 6大热门实时人脸识别开源项目!哪个最适合初级开发者?
    人脸识别相关开源项目汇总
    Nginx设置成服务并开机自动启动
    Linux安装nginx
    nginx根据域名转发
    14个开源免费的人工智能项目,人脸识别依旧很受欢迎
    linux 双网卡内外网访问
    000webhost – 1500M支持PHP可绑米免费虚拟主机
    CPUID
    Apache中.htaccess文件功能
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5090408.html
Copyright © 2011-2022 走看看