分享
 
 
 

下一代WEB开发模式Tapestry简介

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前言

由于internet技术的广泛流行,越来越多的程序开发模式正在从C/S向B/S转换,由于B/S模式具有瘦客户端的优点——无须安装客户端程序,这就大大减轻了软件升级的费用,所有的业务逻辑和数据库存储都放在服务端,从而提高了系统的可维护性。而且由于HTTP协议是一个开放式的标准,因此只要是支持HTTP协议的浏览器都可以运行,再结合目前的xml技术,可以方便地实现跨平台的分布式应用。

但B/S架构有其天生的缺点:无状态性。这其实并不是B/S程序的错,而是由于B/S程序是建立在http协议的基础上的,因此程序无法维护各个客户端的状态,不过所幸的是这个问题现在已经解决了。

现行的B/S开发的另一大缺陷是:代码和Html页面揉和在一起了,对程序员和美工非常不利,而且对代码的维护简直是一场恶梦,这相信是许多Web开发者的一种体会。而C/S结构就没有这种缺陷,因为它是基于组件的,比如VB,你有多得数不清的ActiveX控件来完成一些复杂的界面。

也许你看到这里,心里在盘算着:还是用C/S算了,省得这么多麻烦,但是一个不敢于尝试新技术的公司往往是一个被新技术淘汰的公司。

为了解决上述问题,apache组织开发了一个基于jsp的MVC模式的实现:struts。它将WEB表现层分为model-view-controller几个部分,通过一个servlet来对web的流程进行控件,这与单纯的JSP或asp相比确实进步了不少,因为利用struts能清楚地界定web的流程,而且不提倡使用<% …. %>语句,转而代之的是taglib技术。但它始终没有摆脱代码和HTML页面揉和的问题,而且它的原理对于JSP初学者来说比较复杂,taglib库不够丰富,而且taglib也不像组件那样能够继续。

于是,新一代的WEB开发方法应运而生,它们最典型的就是开发方法是基于组件的,其中最具代表性的就是Tapestry。

为什么要用Tapestry?

Tapestry现在已经属于Apache的Jakarta项目下了,你可以访问http://jakarta.apache.org/tapestry 来访问更多的信息。

Tapestry是一个强有力、开放源码、基于java的用于开发高端WEB应用的framework。它是JSP的一种替代方法,使用Tapestry,可以让你的页面看不到一句JSP代码,这使页面看起来非常干净。它可以用很少的代码来构造一个极端复杂的WEB应用。

Tapestry使用了类似于传统C/S的开发方法:基于组件的开发。使用tapestry,你就可以得到以下好处:

1、非常高的代码复用性,因为在tapestry中,任何事物都可以看作一个可复用的组件。

2、将JSP开发者从繁琐的JSP代码中解脱出来,取而代之的是真正面像对像方法,而不是URL解析。

3、对页面国际化的充分支持

4、精确地错误报告,可以将错误定位到源程序中的行,取代了JSP中那些莫名奇妙地错误提示。

充分支持团队开发,美工人员和JAVA开发人员可以融洽地相处,互相都不依靠于对方。

你也许会问:假如tapestry是基于组件的,那么它的组件是怎样构成的呢?它是由一个定义文件(以XML的格式)、一个HTML模板、一个JAVA类。Tapestry的组件可以组合在一起形成一个更大的组件或逻辑页面。

Tapestry的工作原理如下:在web.xml文件中定义一个名为applicationServlet的servlet来进行处理所有的http请求,这和struts有点相似,不过它主要职责是负责引导整个tapestry核心,启动日志功能,读取配置文件,创建工作引擎来指派客户请求。ApplicationServlet主要是通过它的配置文件来进行自身治理的,你可以通过在web.xml中定义一个名为org.apache.tapestry.specification-path的初始参数来指定这个配置文件,当然假如你觉得这样麻烦,那你也可以不指定配置文件,但tapestry会自动寻找与此servlet同名的配置文件,例如在web.xml中的定义如下:

<servlet>

<servlet-name>Registration</servlet-name>

<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>

那么Tapestry会自动寻找一个名为Registration.application的配置文件,假如用户没有定义此文件,那么Tapestry将不能正常启动。

为了便于理解,我举一个大家都熟知的例子:用户注册模块。首先生成一个注册页面,等待用户的输入,然后进行合法性检查,假如通过,就显示下一个页面。如下所示

也许你会说,咦,这不是和JSP的表单差不多的吗?是的,虽然看上去差不多,但原理大不一样,由于它是基于组件的,所以Name、DOB、Address、City、State、Zip和Register按钮都是单独的组件,而不是普通的表单了。

这时你肯定会说:唉,也不过如此嘛,就算是基于组件的思想设计出来的东西也不过尔尔,这几个文本框这么简单,何必费这么大的劲把它们包装成组件呢?呵呵,不知你注重到DOB这个文本框没有?它和其它几个有些不一样,它的右边多了一个小按钮,假如点击此按钮,出现的结果会让你瞠目结舌!

酷吧?假如你曾经是一个JSP程序员,你的脑海里马上会闪过这样一个念头:一定是用Javascript做的! 假如你这样想的话,那你就大错特错了,因为本人的javascript还没达到这种水平,假如我告诉你完成这样一个组件,只需要在配置文件中加入通俗易懂的几个xml元素的时候,你是否会觉得这真的很神奇呢?

是的,这就是Tapestry的魅力所在,Tapestry主要设计者Howard Lewis Ship的目的就是最大限度地解放JSP程序员的劳动量,让他们有更多的时间花在客户的需求和程序的逻辑设计上,而不是花在和美工人员互相解决矛盾冲突上,你可能会急不可待的问:那我们是否可以动手试一试了呢?是的,当然可以,但在动手之前,我要先介绍一些关于tapestry的概念,并试着开发一个最简单的“hello,world”程序来让你熟悉一下它的配置。因为它是一个framework,假如你对它的结构不是很清楚的话,我想你肯定无法充分地利用它的。

一个Tapestry组件一般称作JWC(Java Web Component),它能与其它JWC一起组合,生成实例,进行配置。比如你刚才看到的那个不可思议的组件就是一个DatePicker组件,刚才的那个页面是一个Page组件,Tapestry自带了很多的JWC组件,这些组件不仅仅只是GUI组件,还有可能是带控制功能的组件,比如foreach组件能够提供循环的功能,同时tapestry还提供了一个简单的方法来制作用户自定义的组件,所有的Tapestry应用的表示层都是由这些JWC构成的。

一个简单的Hello,world程序

为了清楚地弄清tapestry的framwork构架,我们从最简单的”hello,world”开如,打开组件的暗箱来看一看JWC的内部结构。一个典型的JWC包括3个部分----一个HTML模板,一个XML格式的定义文件和一个或多个JAVA类,尽管一个简单的JWC可以仅仅是一个HTML模板,但在本例中我们还是使用这三个部分来展示它的内部结构。

先让我们看一下演示的结果:

由于我们知道Page也是一种JWC组件,因此让我们看一下这个Page组件是怎样构成的,首先,我们看一下它的HTML模板结构:

Home.html

<html>

<head>

<title>Welcome to Tapestry!</title>

</head>

<body>

Hello <span jwcid="user">User Name</span>! Welcome to Tapestry!

</body>

</html>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有