仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 406|回复: 9
打印 上一主题 下一主题

[学习教程] JAVA网页编程之体现层框架Struts/Tapestry/JSF对照

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的js|对照  Struts/Tapestry/JSF是今朝J2EE体现层新老组合的框架手艺。从出生工夫上看,Struts应当对照早,利用得十分普遍,Tapestry3.0渐渐引发普遍的器重,合法Tapestry行将大显神通时代,SUN推出JSF尺度手艺,固然JSF一入手下手推出尚不成熟,留出了一段空缺期,可是跟着JSF1.1尺度推出,JSF入手下手正面反击,粉面盛大退场了。
  实在,JSF和Tapestry也并非那种头见面的不异合作性手艺,二者仍是各有偏重点的,不外对照渺小,可是这类渺小点在完成一个年夜工程时大概带来分歧的感觉和变更。

  起首,我们从一个高度来笼统一下体现层框架应有的手艺架构,下图能够说一切体现层框架手艺都必需完成的功效架构图:




  固然,我们不用空话罗嗦MVC形式,MVC形式是基准形式,如今框架手艺已不用再拼是不是是MVC形式了。在上图MVC形式基本上,一个体现层框架无外乎要完成图中的三个功效:

  1.在以后页面可以显现一个组件对象的内容;而不是象纯JSP那样,必要在Jsp页面写进“挪用对象办法”的Java代码。

  2.当用户按下页面的提交按扭或链接后,事务产生,这时候应当触发服务器端并将以后页面的参数提交给服务器。这类机制体现在Form表单提交和有参数的链接<ahref=""></a>

  3.从一个页面视图间接跳转到别的一个页面视图,纯真的导航感化。

  我们经由过程下表来对照这三种框架在完成上图各个功效时手艺细节,从而得出他们的异同点和侧重点。

StrutsTapestry3.0JSF在View显现的组件请求组件必需承继ActionForm
分显式挪用和隐式挪用
组件必需承继BaseComponent一般POJO
无需承继
ManagedBean组件在View显现粒度View页面只能显现与表单对应的ActionForm,设置中ActionActionForm页面一样平常只能1:1:1干系。可将组件嵌进页面任何一行,对利用组件数目无穷制。同Tapestry页面分区tiles利用Tiles标签库完成,必要别的tiles-def.xml设置文件组件有本人的视图页面,经由过程挪用组件即间接完成多个页面组合。壮大天然的页面组合是其特性。经由过程组件+标签库完成Subview,但如需重用Layout,还要分离Tiles.页面跳转利用标签库html:link中写明方针URL,URL称号必要对比设置文件的path定名,与组件Action耦合。URL称号是方针的组件称号,不触及URL和路径等操纵,便利安定。相似Struts,也必要在设置文件中查找,与组件分别。参数传送利用html:link时传送参数凌驾一个以上处置贫苦。间接挪用组件,间接付与参数,没有参数个数限定参数分别传送给组件事务触发经由过程表单提交submit激活,不克不及细化到表单里字段。可以给于表单每一个字段贴一个事务,事务组件必需完成PageListener接口同Tapestry,事务组件必需练习ActionListener接口  Struts组件编程模子
  Struts完成组件编程时有一些庞大:常常为一个页面中必要引进多个组件而头疼,由于Struts中没法间接引进多个组件,必需绕一些圈子:
  一样平常分两种情形:假如统一个Action就能够凑合这些组件,那末在这类情形下有两个举措:
  1.将这多个组件装进一个ActionForm中,如利用MapForm等机制;
  2.手工将多个组件装进request/session等scope中,然后依据其称号在jsp中取得。
  这两个办法都出缺点:第一种举措常常一个ActionForm弄得改头换面,酿成一个年夜杂烩,违背了OO分拨封装的准绳;第2种举措实在又回到jsp编程;
  第二种情形,假如这些组件必需有事后由分歧的Action来处置,每一个组件必需经由Action-->ActionForm流程,在这类情形下有两种举措:
  1.利用Tiles,分歧流程输入到统一个页面的分歧地区。是一种并行处置体例。
  2.对多个流程首尾相连,第一Actionforward了局是第二个Action,最初输入一个Jsp,在这个jsp中就能够利用后面多个流程的多个ActionForm了,这属于串行体例。
  Struts组件模子弱点
  Struts组件编程必需限制在Action/ActionForm/JSP这三个框框中做文章,难度绝对对照年夜,而Tapestry/JSF则没有太多这些手艺框框限定,二者在组件编程方面更让编程者自在一些,便利一些,这也是组件型框架的上风吧。
  Struts标签库
  在Struts中,常常必要利用标签库来显现组件ActionForm中内容,这就触及到一个分离的成绩,标签库是他人写的,参考Struts的标签库用法,而组件是本人的,难度和贫苦就表现在这个分离点上。
  JSF基础思绪和Struts差未几,只不外换了分歧标签库,也必要标签库+组件的分离思索,不外由于组件这里是通用组件,没有甚么限定,以是如许比Struts要轻松一些。
  Tapestry利用了组件库观点替换了标签库,没有标签库观点,如许就没有标签库和本人的组件必要分离的成绩,都是组件的利用,组件平分Tapestry尺度组件和本人界说的组件,这也是打仗了Jsp系统的人进修Tapestry面对的一个思绪转换。
  详细以页面跳转为例子,页面跳转是靠链接<ahref="方针"></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,能够说是一种Struts2.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同盟的一向战略。
  固然,你也能够宣布你在理论中这三者任何一个的利用感觉,以使得厥后者有一个对照。

最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。
乐观 该用户已被删除
沙发
发表于 2015-1-20 17:08:18 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-29 13:16:32 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
莫相离 该用户已被删除
地板
发表于 2015-2-6 01:20:48 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
小女巫 该用户已被删除
5#
发表于 2015-2-14 19:55:59 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
第二个灵魂 该用户已被删除
6#
发表于 2015-3-4 13:42:30 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
透明 该用户已被删除
7#
发表于 2015-3-11 19:52:45 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
柔情似水 该用户已被删除
8#
发表于 2015-3-11 23:42:13 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
深爱那片海 该用户已被删除
9#
发表于 2015-3-19 16:28:19 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
蒙在股里 该用户已被删除
10#
发表于 2015-3-28 23:03:36 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 16:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表