`
fyjabb
  • 浏览: 2573 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
    谈到tapestry,我使用了tapestry4.0做了电子采购系统,包括中央中直机关采购中心,河南采购网,郑州采购网等等,了解它,可以简单的看到它使用了.page和.html,基于java web的开发,最初,我要下载相关的包,把里面的jar包导入到项目里,当你需要用到里面的组件时,会自动调用的,里面需要注意的是,常用到的一些接口,以及如何读取数据,在页面中需要知道什么,那么在编辑类中要继承basePage,获取相应的构造函数,然后在页面中我使用相应的对象 ,通过一些类型,可以通过@insert等,读取数据时,使用jwcid="ognl:对象.属性名",对于它和struts的区别,Struts、Tapestry、Wicket框架的比较

一、Strust
要论当前Java 世界中Web 开发框架的No1 是谁,Struts 是当之无愧的王者,它遵循MVC 结构,在标准的Java Servlet 和JSP 上进行封装。

在View 这一层,它还是使用JSP 来进行输出,同时提供了许多标签处理页面输出,将指定的数据以Html 方式输出。另外在进行数据交互的时候,使用了ActionForm 在客户端和服务器端进行数据传递,以property 的方式来访问ActionForm 中的数据。但ActionForm
被设计为一个实际类而非接口,也一直是为大家所诟病的,这样就无法使用Pojo,而且为
了传递数据,程序员不得不编写相关的ActionForm 实现。

对于Model 这一层,Struts 没有作任何强制处理,但对于中小项目,许多时候为了加快开发速度,Model 这一层与View 层经常有一些重复,分离的不是很清楚,常见的就是许多用于Model 的类直接继承了ActionForm 类,显然增加了系统的混乱,同时也给程序的单
元测试带来许多问题。

对于Control 这一层,Struts 提供了Action,它不仅可以处理ActionForm 的数据传递,而且可以根据XML 文件载入相关的流程转向。程序员也可以编写相关的业务处理类进行各种业务的处理,当然对于小系统,也可以直接在这里处理业务。而且它还支持Token,以避免数据的重复提交(但Struts 的Token 基于Session,对于同一个Session,只支持一个Token)。

因此从上面的分析看来,Struts 并没有完整的对JSP 和Servlet 进行了封装,程序员仍然需要了解许多与Servlet 相关的信息,如Request 和Response,Session,Parameter 等基本信息。而且对于Pojo 等支持不足,造成单元测试的困难,所谓StrutsTestCase 也实在没有减少多少单元测试上的麻烦。

我个人认为Struts 最大的问题出现在View 层上,对于中小项目而言,UI 层的开发绝对不是一个可以忽略的因素,在我负责及参与的多个中小项目中,View 层开发的工作量一般不低于30%,原因可能是多方面的:
1. 用户的需求会产生各种变化,经常需要对界面进行调整;
2. Struts 对界面的控制度比较差,如果要控制一个文本框或者是一段文字不可见,需要编写大量的Tag 进行控制,如<logic:equal>等,当然也可以由开发人员编写Tag,这样的处理并不比直接在JSP 页面中使用Java 代码来的轻松;
3. 由于Struts 仍然使用JSP 作为主要的View 载体,而对于美工而言,使用Tag 几乎是一件不可能完成的任务,虽然网上有些朋友建议美工学习一下标签,但是这个不太现实,毕竟分工不同。对于已经含有Tag 的网页,如果经过美工处理,结果往往是惨不忍睹,不能很好的协同工作,对于开发效率无疑是一个重大的影响因素。
4. JSP 通常在执行的时候才能看到效果,而且要经过编译,因此每次修改以后,其测试也是一件很痛苦的事(JSP 属于模板结构,混合了代码和界面,所以无论对哪方面的修改,都要重新编译和运行,其执行时是编译成Servlet 的Java 代码来运行,因此需要比较多的时间来编译和执行,速度比较慢),而且许多Tag 的异常和页面的异常无法准确定位,这个也是程序员十分讨厌的一件事。(一些新版本的Web 服务器,遵循了JSR 标准,如Tomca t5,WebLogic8 都可以很好的支持JSP错误定位了)。

以上都是Struts1版本的属性,在Struts2中有很大改善。主要有:
1、 前台和服务器传递数据用pojo,不再用ActionForm。
2、 与Spring集成,采用了依赖注入。
3、 与OGNL表达式语言集成。

二、Tapestry

它的结构与ASP.NET 相似,但不是基于控件处理,而是基于Bean 的Property 进行处理。也就是通过一个配置文件在UI 和Bean 之间进行绑定(Page 文件),根据JavaBean 的属性来控制UI 控件,如UI控件是否可见和文本框中的值。最令人高兴的是,Tapestry 当时是Apache 下Jakarta 小组的一个子项目,Apache 出品,必属佳作,这在Java 世界里是已经公认的。

Tapestry 的4.0 也发布了一段时间,而Tapestry5 也蓄势待发,但我没有仔细看过其内容,据网上而言,变化很大,而且HiveMind 绑定了,我觉得作为一个比较成熟的框架,Tapestry 应该是很容易与其它的IOC 容器进行整合的,毕竟走回头路的人不会太多,果不其然,很快就有大量的文章来讲述,如何同时使用Tapestry 和Spring。

因为基于组件结构,所以它不使用Tag,而且在Tapestry 中使用了JavaAssist 进行二进制级的优化,与JSP 相比,性能得到了很大的提高。另外Tapestry 的多语言支持,使得不同国家地区的浏览看到的内容不仅仅是文字上的翻译,还可以是整个风格的变迁,应该说
Tapestry 是我见过最为优秀的Java Web 开发框架。

如果非要说它的缺点,我觉得有点勉强,就是它的开发思想比较特殊,完全区别与以往的JSP,Struts,与老式的C/S 开发也不相同,基于JavaBean 和配置文件管理页面,是一种全新的组件方式,这也使得Tapestry 的学习曲线比较高,对于一个生手而言,短期里很
难上手。我个人认为这是Tapestry 在Java 世界用户相对较少的一个主要原因,因为无论是习惯以前JSP 开发还是习惯Delphi 那种C/S 开发方式的人,学习Tapestry 时,几乎都要重头再来,而且并不是所有的程序员都有很好的设计基础和OO 思想,学Tapestry 还是很费力气的。如果想好好学习Tapestry,更深入的了解OO,会带来学习上的便利。我常在想,如果Tapestry 是一个产品的话,可能又是一个技术成功,而市场失败的产品。

今天的Tapestry 已经很成熟了,象J2EE 的No.1 网站TSS,就是构建在Tapestry 的基础上,而且据测试,性能较JSP 有两倍的提高。

三、Wicket

用Wicket 小组的话说,Wicket 与Tapestry 和Echo 相类似,事实如此。Wicket 在UI的处理上,与Tapestry 采用了同一手法,即使用原生的Html 元素,但通过添加Html 元素的属性来表明这个特殊的控件,然后由后台的Html 解析器进行分析,抽取这些元素,再
由后台进行处理,最终输出Html。这样做的好处:

1.避免了开发一个专用的IDE 用来处理Html。毕竟Java 的Web 框架往往是个人和小组织的产品,做一个Web 开发的IDE 未免力不从心。而直接使用Html,则可以充分利用市场上各种Html 编辑工具,如DreamWeaver。

2.多语言的支持其实对于Web 框架是非常重要的。以往的Web 框架一般在属性文件中放置各种资源,而自从Tapestry 后,不仅支持语言的改变,还支持布局的变化,Wicket对多语言的支持与Tapestry 如出一撤。以上的优点同样适用于Tapestry,但Wicket 最大的优点在于学习曲线。在后台的处理上与ASP.NET 相同,直接将前台的Html 中的控件映射到Java 对象中,通过Java 对象来直接操作控件的输出和行为。例如设置一个文本框不可见,只需要用textField.setVisiable(false)即可,这样看起来是不是和ASP.NET 以及以前的C/S 程序非常相似啊。而且Wicket 根据文件名自动查找Html(也可以定制查找的方式),不需要一个XML 文件在Java 文件和Html 文件间进行绑定。事实上个人认为,在这里使用XML 文件的方式,弊大于利。使用规则的方式进行绑定,还有利于代码的规范。因为如果不规范,就无法正常运行,带有一定的强制性。

Wicket 不仅清楚的区分了程序和美工的工作范围,而且清楚的划分了Web 开发的层次,也有利于程序的开发和维护。
Wicket 可以自动管理服务器端和客户端的数据交互和状态,有效的避免了"脏数据","重复提交",而且支持Pojo,有利于单元测试。
Wicket 还可以定义各种控件,有利于复用。最后就我个人而言,Wicket 和Tapestry 的开发思想非常相似,仅仅在程序员的开发方
式上有所不同。Wicket 较之Tapestry 的最大优点在于学习曲线低。而Tapestry 则是一个非常成熟的Web 框架,其成熟度不是目前Wicket 可以相比的。

分享到:
评论

相关推荐

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    tapestry教程资料文档合集

    Tapestry5最新中文教程.doc 作者 Renat Zubairov & Igor Drobiazko译者 沙晓兰 发布于 2008年7月2日 下午9时30分 社区 Java 主题 Web框架 ----------------------------------------- Tapestry5.1实例教程.pdf ...

    tapestry5以上的帮助事例,帮助文档与spring衔接文档

    Tapestry是一个基于控件的框架以致于用它开发Web应用类似开发传统的GUI应用。你用Tapestry开发Web应用时你无需关注以操作为中心的(Operation-centric) Servlet API.引用Tapestry网站上的一句话:"Tapestry用对象...

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    tapestry-bin-5.1.0.5

    【标题】"tapestry-bin-5.1.0.5" 指的是Apache Tapestry的一个特定版本的二进制发行包。Tapestry是一个开源的Java Web应用程序框架,它提供了一种基于组件的开发方式,用于构建动态、交互式的Web应用。 【描述】...

    tapestry3开发指南,带tapestry3所有jar包

    **Tapestry 3 开发指南** Tapestry 3 是一个开源的Java Web应用程序框架,它在20世纪90年代末至21世纪初非常流行,由Apache软件基金会维护。这个框架提供了组件化、事件驱动和声明式编程模型,帮助开发者构建动态、...

    tapestry学习入门资料

    "tapestry学习入门资料" Tapestry 是一个开源的基于 servlet 的应用程序框架,它使用组件对象模型来创建动态的、交互的 web 应用。 Tapestry 使得 Java 代码与 HTML 完全分离,利用这个框架开发大型应用变得...

    tapestry源码 api等

    Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它强调组件化、模块化和松耦合的开发方式,使得开发人员可以构建出高效、可维护的Web应用。以下是对Tapestry源码、API及相关库的详细解读: 1....

    Tapestry4开发指南

    ### Tapestry4开发指南 #### 一、Tapestry4概览 Tapestry4作为一款先进的Web应用框架,由Howard Lewis Ship所创造,旨在提供一种更为高效、灵活的Web应用构建方式。与前代Tapestry3相比,Tapestry4在设计上有了...

    tapestry5中文文档

    Apache Tapestry 5 是一个基于Java的Web应用开发框架,其设计目的是为了简化Web应用程序的构建,提供组件化的页面构建、输入验证、本地化、状态管理和URL映射等功能。Tapestry 5 强调易用性,不仅对终端用户友好,...

    tapestry5.2.6 jar包

    Tapestry 5.2.6 是一个成熟的Java Web开发框架,它提供了一种高效、模块化和可扩展的方式来构建动态、数据驱动的Web应用程序。这个框架的核心理念是将用户界面与业务逻辑分离,通过组件化的思想实现页面的构建,从而...

    Tapestry通用WEB框架

    Tapestry是一个强大的Java Web应用程序框架,由Apache软件基金会维护。它旨在提高开发效率,提供高度模块化和可重用的组件,以及优秀的错误处理和调试能力。在深入探讨Tapestry的知识点之前,让我们先了解一下这个...

    Tapestry 5 電子書

    《Tapestry 5 電子書》是关于Java Web开发框架Tapestry 5的一本详尽指南,由Packt Publishing在2007年出版。这本书旨在帮助开发者深入理解和掌握Tapestry 5的各个方面,从而利用其强大功能构建高效、可维护的Web应用...

    tapestry-4.0.zip

    Tapestry 是一个开源的Java Web应用程序框架,由Apache软件基金会维护。这个“tapestry-4.0.zip”压缩包包含了Tapestry框架的4.0版本,这是一个相对较早的但非常稳定的基础,对于初学者来说是个很好的学习起点。在...

    tapestry4开发指南

    《Tapestry 4开发指南》是一本专为初学者设计的书籍,旨在帮助读者深入理解和熟练运用Tapestry 4这一强大的Java Web框架。Tapestry 4是一款开源的、基于组件的Web应用程序框架,它允许开发者用更加面向对象的方式来...

    深入浅出tapestry

    本书以循序渐进的方式,从Tapestry框架技术的基本概念入手,讲解Tapestry框架在J2EE Web应用程序中的整体架构实现。使读者在学习如何使用Tapestry框架技术的同时,还能够获得在J2EE Web应用程序中应用Tapestry框架的...

    tapestry5.3.5 IOC用户登陆权限

    在IT行业中, Tapestry 是一个基于Java的开源Web应用程序框架,它强调组件化、类型安全和高度可测试性。Tapestry 5.3.5是该框架的一个版本,提供了许多增强的功能和改进。在这个场景中,我们关注的是"IOC用户登陆...

    tapestry开发技术文档

    Jakarta Tapestry 是一款强大的Java Web应用程序框架,其设计目标在于简化Web开发,提高效率,并提供一致性和良好的错误处理机制。对于初学者来说,Tapestry可能会显得有些复杂,但深入学习后,你会发现它与其他框架...

    Tapestry4.1.2 入门-介绍

    【Tapestry4.1.2 入门-介绍】 Tapestry 是一个基于Java的Web应用程序框架,它提供了一种面向组件的开发方式,极大地简化了Web应用的构建过程。在Tapestry中,开发者无需关注HTTP请求的处理细节,如链接、请求流向和...

Global site tag (gtag.js) - Google Analytics