表现层框架Struts/Tapestry/JSF比较 - 编程入门网
不同区域。 是一种并行处理方式。
2. 对多个流程首尾相连,第一Action forward结果 是第二个Action,最后输出一个Jsp,在这个jsp中就可以使用前面多个流程的多 个ActionForm了,这属于串行方式。 Struts组件模型缺点 Struts组件编程 必须限定在Action/ActionForm/JSP这三个框框中做文章,难度相对比较大,而 Tapestry/JSF则没有太多这些技术框框限制,两者在组件编程方面更让编程者自 由一些,方便一些,这也是组件型框架的优势吧。 Struts标签库 在Struts 中,经常需要使用标签库来显示组件ActionForm中内容,这就涉及到一个结合的 问题,标签库是别人写的,参考Struts的标签库用法,而组件是自己的,难度和 麻烦就体现在这个结合点上。 JSF基本思路和Struts差不多,只不过换了不同 标签库,也需要标签库+组件的结合思考,不过因为组件这里是通用组件,没有 什么限制,所以这样比Struts要轻松一些。 Tapestry使用了组件库概念替代 了标签库,没有标签库概念,这样就没有标签库和自己的组件需要结合的问题, 都是组件的使用,组件中分Tapestry标准组件和自己定义的组件,这也是接触了 Jsp体系的人学习Tapestry面临的一个思路转换。 具体以页面跳转为例子,页 面跳转是靠链接<a href="目标"></a> 实现,链接是 页面经常使用的元素。 Struts提供的html:link在频繁使用就特别不方便,尤 其在传递多个参数时:其中html:link的page值,是跳转对方页面或Action的 path,这个path一般需要到struts-config.xml查找Action的相应path,一旦配置 文件path值修改,涉及到这个所有相关页面都要修改。 JSF将链接概念划分两 个方面:导航性质和事件激活,在导航方面还是需要到配置faces-config查询 Navigation的from-outcome的值。 由于Tapestry没有标签库概念,只有组件 或页面两个概念,因此,链接跳转目标要么是组件,要么是页面,简洁简单,它 没有多余的path概念,就是组件名,也就是对象名称,组件名称和path名称合二 为一。 总结 JSF在很大程度上类似Struts,而不是类似Tapestry,可以说 是一种Struts 2.0,都是采取标签库+组件的形式,只是JSF的组件概念没有象 Struts那样必须继承ActionForm的限制;JSF在事件粒度上要细腻,不象Struts 那样,一个表单一个事件,JSF可以细化到表单中的每个字段上。 JSF只有在 组件和事件机制这个概念上类似Tapestry,但是不似Tapestry那样是一个完全组 件的框架,所以,如果你做一个对页面要求灵活度相当高的系统,选用Tapestry 是第一考虑。 Struts/JSF则适合在一般的数据页面录入的系统中,对于 Struts和JSF的选用,我目前个人观点是:如果你是一个新的系统,可以直接从 JSF开始;如果你已经使用Struts,不必转换,如果需要切换,可以将JSF和 Tapestry一起考虑。 另外,JSF/Tapestry不只是支持Html,也支持多种客户 端语言如WML或XUI等。 这三者之间关系:如果说Struts是左派;那Tapestry 则是右派;而JSF则是中间派,中庸主义是SUN联盟的一贯策略。 当然,你也 可以发表你在实践中这三者任何一个的使用感受,以使得后来者有一个比较。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |