Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Jute Powerful Forum  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Jive3.0 Webwork和 Jute1.0 Action Mapping 之间的比较
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-11-30 10:42 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
今天下载了Jive 3.0来试用,准备研究一下Jive的新特性,为Jute下一步发展做一些参考。研究过程中的发现将会收集起来与大家一起分享。

标题:Jive3.0 Webwork和 Jute1.0 Action Mapping 之间的比较
作者:Rainmanzhu
时间:2002-11-29
来自:http://www.cjsdn.com

内容:
Jive3.0中,包含了一个webwork的框架,看命名就能理解是用来处理网页链接以完成一系列相关的任务。因为http协议是无状态的,所以如果任务是分步执行的就必须定义协议把多个链接串(chain)起来,一般情况下任务处理会有出错或成功的分支,比如新添话题这样一个任务,如果文章标题过长,就需要把出错页面显示给用户;如果成功加入话题,又需要提示用户发贴成功,在jive中,这个action是定义在actions.xml的:

<action name="PostAction" alias="post">
<view name="attach">attach!default.jspa</view>
<view name="cancel">doRedirect.jspa?url={last}</view>
  <view name="error">postform.jsp</view>
  <view name="input">postform.jsp</view>
  <view name="login">loginform.jsp</view>
<view name="preview">viewpreview.jsp</view>
<view name="rejected">postform.jsp</view>
<view name="spellcheck">spell!default.jspa</view>
<view name="success">postform-success.jsp</view>
</action>

可以看到这个动作有很多个分支,并且有些分支是链起来的(加粗的地方),如attach。当然actions.xml中也定义了attach动作:
<action name="AttachAction" alias="attach">
<view name="input">attachform.jsp</view>
<view name="error">attachform.jsp</view>
<view name="success">postform-success.jsp</view>
<view name="cancel">post!default.jspa</view>
<view name="unauth">error.jsp</view>
</action>
cancel动作就使得能返回到发贴动作。action的name事实上是指向jive定义的一个类的,所以动作的逻辑均在该类中实现。action类的基类都是com.jivesoftware.webwork.action.Action,内有一抽象excute()方法。action的分发统一通过com.jivesoftware.webwork.dispatcher.ServletDispatcher来进行,ServletDispatcher通过url (*.jspa -jsp action?)来寻找相应的action,然后设置ActionContext(动作环境,所有参数都通过该类传递给action,传递是根据同一线程来进行的,方法非常之好!),最后执行action的excute()方法,方法返回值为view(如attach,cancel...),而view对应的jsp在actions.xml也定义好了!ServletDispatcher再通过RequestDispatcher转发给jsp页面,应用服务器再执行jsp生成html。

上面稍微分析了一下jive中的webwork是怎么回事,其实本文最重要的是分析jive为什么要引入webwork?从jive发展的历史来看,1.0的jive是用javabean+jsp的模式,两个jsp之间没有固定联系,而且都堆积在一个根目录下,这样维护是非常糟糕的,jive当时也支持skin,但可以看到每个skin都是写了一堆这样的jsp,几乎没有重用性!其实这种模式是2层的,缺乏了控制层,如判断用户登录状态等,每个需要的地方都需要调用api,jsp里出现了大量的java代码,所以每次jive升级,都可以看到先前的jsp几乎面目全非,这对一个快速发展的项目来说,是非常的一个阻碍因素,当时的jive重点在数据层的设计可能是一个原因。2.0以后的Jive我似乎看过,发现设计上没什么大改。但jive3.0带了一个make sense的三层结构,数据层仍然不变,中间层为action,表现层为使用标签的简化jsp。我认为这才是真正有意义的设计。顺便提一点,webwork定义了一组标签用于jsp:
如首页当中的:
<%-- Print info messages if they exist --%>
<ww:if test="infoMessages/hasNext == true">
<%@ include file="info-messages.jsp" %>
<br><br>
</ww:if>
通过标签的使用,jive界面的可控性变得良好起来。
稍后我会重点分析一下webwork的性能,希望能从中学到一些好方法。

Jute 1.0也是非常成熟的三层结构,中间层采用Servlet Mapping+Action Mapping,将不同功能组通过url前缀区分开来,同一功能组根据功能的复杂程度来选择定义新的Servlet或选择定义新的Action来分隔代码。采用继承和抽象方法来重用代码,Jute所有的Servlet都从JuteServlet继承。事实上其他Servlet都是定义Action组!每个Servlet都有perform(Context context, CGI cgi)方法,是缺省的action;然后可以定义其他action来完成不同的动作,Jute的CGI类类似Jive的ActionContext,Request,Cookie,Session都通过cgi对象获取,为了提高性能,CGI类是通过对象Pool创建的;Jive每次都创建新的ActionContext,并保存在ThreadLocal内!这点是偶以前没想到的,稍后研究一下。而Jute的Context类事实上是TemplateContext(hash结构),也可以用于保存控制层状态,但更多用于向界面层提供数据。

基类JuteServlet里有excuteAction方法,方法执行结束后返回界面模板,这点和jive非常类似!!!但区别也非常大!Jive是用静态映射action的,而Jute是运行时刻映射的,最终两者都通过cache来加快寻找action的,但Jive可以定义action chain,及action的各种view,并能保存上一个action,对于action执行过程中产生的错误也能保存在action中,并且通过修改配置扩展功能。而Jute的Action mapping,能通过cgi类来保存上一次状态,类似采用ASP.Net中的ViewState。创建action chain的时候比较麻烦,要注意保存每个过程的上一个状态,而这样url就变得非常长!Jive缺省可以嵌套10层。
Jive可以这样写:
<a href="<%= path %>/<ww:property value="previousURL" />">Go Back</a>来获取上一个url。
我觉得日后可以修改Jute来改进Http状态的保存。
Jute的返回界面没有象jive一样采用mapping方法,而是直接写在相应action方法中,因为界面和action关系紧密,一般不能变换,但在界面模板里可以通过include方法来嵌入子模板。

综上所述,Jive 3.0体系更加成熟,采用的设计模式更加丰富了,非常值得采用Servlet技术的网络应用开发者学习。相当于cgi,mod-perl,php,asp,asp+等技术,servlet功能更强大,更灵活,也容易开发出好的framework,目前java世界里的framework不计其数!而现在仍采用cgi技术开发显得比较落后,缺乏安全性保证;php只适合小型网站的快速开发,一但代码到达一定量,维护和升级就是很大的问题,也不容易进行代码的性能调节;早期的ASP技术(VBScript)也显得比较落后,ASP+已经取而代之,但ASP+的缺点是底层代码不公开造成自己来开发Framework比较困难,市面上缺乏成熟可靠的应用框架,我看过微软推荐的ASP.Net开源项目,其中应用的设计模式偶觉得远不如Java。而从Jive的发展我们可以看到采用Java技术带来的灵活性,在Jive的数据库层(包括Cache层)成熟后,Jive的开发者又着手优化上层的设计,虽然这一阶段代码修改量很大,但这样做是非常值得的,将来Jive可以有更快发展的!
Jute在系统架构上比较成熟是一个优势,但框架还比较简单,虽然已经满足了目前的开发需求,但仍需要完善整个框架。


rainman edited on 2002-11-30 10:46


作者 Re:Jive3.0 Webwork和 Jute1.0 Action Mapping 之间的比较 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-11-30 16:27 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近正好有个朋友在研究WebWork,我也就顺道了解了一下。
个人感觉,WebWork简单而结构清晰,特别是那个“!”加的实在太合理了。其它的相应功能也很全面,特别是那个ValueStack和EL,使得JSP当中可以完全脱离开代码。加上opensymphony的其他紧密结合的项目,更加如虎添翼。我猜过不了多久,WebWork就会压倒Struts了。



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 Re:Jive3.0 Webwork和 Jute1.0 Action Mapping 之间的比较 [Re:rainman]
scottding

十三部落酋长

CJSDN高级会员


发贴: 1054
积分: 101
于 2002-11-30 16:48 user profilesend a private message to usersend email to scottdingsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
非常值得以看哦,,偶也得好好研究。


作者 写的很好 [Re:rainman]
abc123





发贴: 81
积分: 20
于 2002-11-30 19:17 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
还有就是webwork是开源的,matt本人应该也是作者之一
(一共才2个人)



作者 webworks [Re:rainman]
javait



CJSDN高级会员


发贴: 84
积分: 60
于 2002-12-01 10:53 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Anyone interested can find the doc at http://www.opensymphony.com/webwork/

SmileSmile

javaIT



作者 偶正在下载 [Re:javait]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-01 11:16 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
晕,开始还以为是jive自己开发的呢,反编译看了一下代码,哼哼,jive都把包名改成自己的了,不知道有没有违反人家的协议。



作者 jive都把包名改成自己的了,不知道有没有违反人家的协议 [Re:rainman]
javait



CJSDN高级会员


发贴: 84
积分: 60
于 2002-12-01 11:51 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
应该是违反了,人家的协议是opensource,可没让修改包名!

我想使用WEBWORK 是可以的。但JIVE 的作法缺乏职业操守。

:(:(

javaIT



作者 Re:偶正在下载 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-01 16:16 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
rainman wrote:
晕,开始还以为是jive自己开发的呢,反编译看了一下代码,哼哼,jive都把包名改成自己的了,不知道有没有违反人家的协议。


很遗憾,WebWork采用的是Apache的License,也就是说,它有权修改。虽然这种行为很无耻。
自从Jive不开源之后,我就认为这是个无耻的项目。
AngryAngryAngry



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 Re:jive都把包名改成自己的了,不知道有没有违反人家的协议 [Re:javait]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-01 16:18 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
javait wrote:
应该是违反了,人家的协议是opensource,可没让修改包名!

我想使用WEBWORK 是可以的。但JIVE 的作法缺乏职业操守。

:(:(

javaIT


Apache License允许修改源码。Sad
虽然Jive这样做确实很无耻。合法的不一定合理。



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 呵呵 [Re:SimonLei]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-02 00:24 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
jive里有很多包都是这样的,如jdom,xml parser。不看不知道,一看吓一跳啊。



作者 Re:呵呵 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-02 08:54 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
rainman wrote:
jive里有很多包都是这样的,如jdom,xml parser。不看不知道,一看吓一跳啊。


所以Jive这种项目,是Open Source界的耻辱。
类似的项目还有不少,先开源,等大家奉献得差不多,
开始搞商业化。这也许是Open Source存在的一个大漏洞,
会严重打击大家的积极性。前一段RedHat也修改了KDE3.0
的代码引起纠纷,sigh.



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 呵呵,好像divx也是这样搞的。 [Re:SimonLei]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-02 09:17 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
别有用心哦!



作者 Re:呵呵,好像divx也是这样搞的。 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-02 11:08 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
rainman wrote:
别有用心哦!


没错,而且我听说,divx经历了不止一次这种把戏。
sigh,利字当头啊。长此以往,恐怕愿意做open source
的人越来越少了。 Sad



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 Open Source还是会有搞头的 [Re:SimonLei]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-02 12:08 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
偶觉得是个别现象吧!
apache基金还是有保障的。




作者 但愿如此吧,呵呵。 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-02 12:53 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
其实Open Source不反对商业化。而反对Close-source
Jive这种做法,实在是让人心寒。

有件事情我觉得很奇怪,Jive做的也不算很好啊。
我访问过不少用Jive做的论坛,感觉也只一般而已。
为什么就这么跑火呢?



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 Re:但愿如此吧,呵呵。 [Re:SimonLei]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-03 01:31 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
SimonLei wrote:
其实Open Source不反对商业化。而反对Close-source
Jive这种做法,实在是让人心寒。

有件事情我觉得很奇怪,Jive做的也不算很好啊。
我访问过不少用Jive做的论坛,感觉也只一般而已。
为什么就这么跑火呢?


呵呵,这就是我做Jute的一个原因啊,我觉得Jive的设计并不是很好,所以就弄一个Jute出来,省得Java世界里就Jive一个人横行。




作者 Re:但愿如此吧,呵呵。 [Re:rainman]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-03 08:17 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
rainman wrote:
呵呵,这就是我做Jute的一个原因啊,我觉得Jive的设计并不是很好,所以就弄一个Jute出来,省得Java世界里就Jive一个人横行。


Thumbs up
这也是我支持Jute的原因之一。Big Smile



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 拉出来遛遛! [Re:rainman]
zoof



发贴: 0
积分: 0
于 2002-12-04 01:10 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
2位你来我往的说了半天,此刻终于说到戏肉上了!

很让人生嫌,2位扁JIVE是否此刻该抬JUTE了呢?戏肉终于初见端睨.....

说的那么热闹,把JUTE放出来给我们下载看看吧,是否阁下也大方的OPEN SOURCE以示与左冷禅(JIVE)的拓跋不群呢?

不过,我等最关心的是,JUTE能否持续开发/升级和维护, 你的算法怎么好,也只能是奇淫技巧!

阁下是否有可持续发展之良策,才是JUTE长青之缘水,我等放胆使用的安心丸!

衷心祝愿,JUTE不是今天你长我短,明日入土为安,放出1.0**版本就从此无下文为好!



作者 呵呵,大侠哦 [Re:zoof]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-04 01:37 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
已经有4个测试站点了,已经溜了好几遍了。



作者 Re:拉出来遛遛! [Re:zoof]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-04 01:45 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
zoof wrote:
2位你来我往的说了半天,此刻终于说到戏肉上了!

很让人生嫌,2位扁JIVE是否此刻该抬JUTE了呢?戏肉终于初见端睨.....

说的那么热闹,把JUTE放出来给我们下载看看吧,是否阁下也大方的OPEN SOURCE以示与左冷禅(JIVE)的拓跋不群呢?

不过,我等最关心的是,JUTE能否持续开发/升级和维护, 你的算法怎么好,也只能是奇淫技巧!

阁下是否有可持续发展之良策,才是JUTE长青之缘水,我等放胆使用的安心丸!

衷心祝愿,JUTE不是今天你长我短,明日入土为安,放出1.0**版本就从此无下文为好!


偶没有贬Jive啊!但Jive没有Jute功能强是肯定的,架构也不如Jute爽哦。
你放心好了,Jute持续发展不是问题啦。持续发展当然已经有妙计了啊!
界面开发已经启动了,看看 bbs.zuasoft.com 好了,plug-in和xml的标准也在指定当中,以后Jute用户可以自动升级。维护团队已经有两位选手了,多种环境下都安装过,其中一位更是模板高手!另有几位超级教练在后面指导,不用杞人忧天了。




作者 干吗要比来比去啊,互相学习不好吗? [Re:rainman]
rainbow





发贴: 25
积分: 0
于 2002-12-04 19:31 user profilesend a private message to usersend email to rainbowsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
很久以前,我也想仿造jive找一个论坛的,不过后来找工作没空搞
现在看到jute比jive更好,我举双手支持他



作者 都是这样的 [Re:rainman]
magician





发贴: 15
积分: 0
于 2002-12-05 15:58 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
一旦成功了,马上转为商业项目

JIVE不是第一个了



作者 re [Re:rainman]
beeke



发贴: 0
积分: 0
于 2002-12-05 18:05 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
都说了WebWork有两个开发者,其中一个是matt
至于matt,就是jive的主要开发者
他把自己的程序打成jivesoft的包不过分吧

jive在3.0之前都是open source的,无数的java程序员从它那里得益菲浅
没有必要去贬低jive吧



作者 Re:re [Re:beeke]
rainman

阿熊

元老


发贴: 5644
积分: 454
于 2002-12-06 02:36 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
也没有要贬低Jive的意思,呵呵。



作者 Re:re [Re:beeke]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-06 08:50 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
beeke wrote:
都说了WebWork有两个开发者,其中一个是matt
至于matt,就是jive的主要开发者
他把自己的程序打成jivesoft的包不过分吧


?? 此Matt非彼Matt吧?
From WebWork:

Matt Baldree matt@smallleap.com ICQ: 146428819 smallleap.com

From Jive:

Matt Tucker
CTO

Matt Tucker was a software engineer at 4charity, a San Francisco based software and services company for the non-profit sector, before co-founding Jive Software. Prior to 4charity, Matt designed and developed a multi-tier bug tracking tool for Sun Microsystems's Swing Team. He has been an active contributor to Open Source server-side Javatm software, and in 1999, he co-founded CoolServlets.com, a leading Open Source server-side Javatm website. He also won First Place and Commended Prize in the '98 ACM/IBM Quest for Java contest, and the John Deere and Cargill computer science scholarships.

Matt leads core product development at Jive Software. He holds a BS in Computer Science from the University of Iowa and lives with his wife and computer in New Jersey.



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/
作者 Re:jive都把包名改成自己的了,不知道有没有违反人家的协议 [Re:SimonLei]
snowbug



CJSDN高级会员


发贴: 418
积分: 130
于 2002-12-18 14:40 user profilesend a private message to usersend email to snowbugsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
SimonLei wrote:
Apache License允许修改源码。Sad
虽然Jive这样做确实很无耻。合法的不一定合理。


我记得 Apache License 要求如果更改 open source 的原码,更改的部分必须也是 open source 的。所以应该是违反了 license 的说。 (不过要回去查查看是不是这样,偶也有些不确定了)



作者 Re:jive都把包名改成自己的了,不知道有没有违反人家的协议 [Re:snowbug]
SimonLei



CJSDN高级会员


发贴: 288
积分: 100
于 2002-12-18 15:44 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
snowbug wrote:
我记得 Apache License 要求如果更改 open source 的原码,更改的部分必须也是 open source 的。所以应该是违反了 license 的说。 (不过要回去查查看是不是这样,偶也有些不确定了)


你说的是LGPL,而Apache License更宽松些。



You may say I am a dreamer, But I am not the only one.
My blog+wiki: http://blogsite.3322.org/

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923