亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

下一代WEB開發模式Tapestry簡介

2019-11-18 11:36:38
字體:
來源:轉載
供稿:網友

  前言

  由于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將不能正常啟動。

  為了便于理解,我舉一個大家都熟知的例子:用戶注冊模塊。首先生成一個注冊頁面,等待用戶的輸入,然后進行合法性檢查,假如通過,就顯示下一個頁面。如下所示

下一代WEB開發模式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模板,但在本例中我們還是使用這三個部分來展示它的內部結構。

  先讓我們看一下演示的結果:

下一代WEB開發模式Tapestry簡介(圖二)

  由于我們知道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>



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品少妇全裸体| 国产成人免费av| 色偷偷av一区二区三区| 欧美激情亚洲激情| 岛国视频午夜一区免费在线观看| 久久久久一本一区二区青青蜜月| 日韩av123| 国产精品一区二区三区久久| 91免费在线视频网站| 久久久久久亚洲| 亚洲最大福利视频网站| 国产精品久久久久久久一区探花| 国产精品视频xxx| 久久人体大胆视频| 国产一区二区三区在线| 欧美小视频在线| 欧美日韩亚洲91| 欧美成人免费va影院高清| 欧美疯狂xxxx大交乱88av| 日韩美女中文字幕| 日韩精品亚洲精品| 欧美日韩亚洲精品内裤| 国产亚洲成精品久久| 久久偷看各类女兵18女厕嘘嘘| 久久在线免费视频| 亚洲国产一区自拍| 色噜噜久久综合伊人一本| 一本色道久久88精品综合| 亚洲国产高清自拍| 午夜精品久久久久久久男人的天堂| 国产成人精品视| 国产精品69av| 久久激情五月丁香伊人| 2019中文字幕在线观看| 国产91精品不卡视频| 久久久久久久久久国产精品| 韩国视频理论视频久久| 久热99视频在线观看| 国产精品久久久久av| 日韩在线免费观看视频| 久久6精品影院| 亚洲精品自拍视频| 日韩中文第一页| 成人美女免费网站视频| 国产成人欧美在线观看| 欧美丝袜美女中出在线| 97精品国产97久久久久久| 欧美不卡视频一区发布| 亚洲片在线资源| 欧美激情第1页| 久久久成人精品| 色噜噜国产精品视频一区二区| 中文字幕亚洲自拍| 欧美孕妇性xx| 日韩在线www| 日韩在线观看电影| 国外视频精品毛片| 九九九久久国产免费| 欧美一级淫片videoshd| 欧美精品做受xxx性少妇| 国产91色在线免费| 日韩va亚洲va欧洲va国产| 国产在线999| 精品国产一区二区三区久久久| 亚洲欧美三级在线| 亚洲欧美国产高清va在线播| 日韩欧美一区二区三区久久| 日韩网站免费观看| 国产精品成人av在线| 亚洲国产成人久久综合一区| 欧美最猛性xxxxx亚洲精品| 91丝袜美腿美女视频网站| 久久久久在线观看| 91精品视频免费| 欧美成人免费网| 国产精品亚洲第一区| 国产精品精品久久久| 亚洲日本欧美中文幕| 国产成人在线视频| 少妇高潮久久久久久潘金莲| 日韩精品在线观| 亚洲最大的网站| 亚洲黄色成人网| 欧美性色视频在线| 亚洲人成网7777777国产| 日韩美女主播视频| 日韩精品视频在线免费观看| 久久最新资源网| 久久精品中文字幕电影| 欧美激情手机在线视频| 日本精品久久中文字幕佐佐木| 最新91在线视频| 日韩大片免费观看视频播放| 精品人伦一区二区三区蜜桃免费| 国产精品视频播放| 日韩精品一区二区三区第95| 精品人伦一区二区三区蜜桃网站| 亚洲va欧美va国产综合剧情| 亚洲欧美激情另类校园| 国产成人福利网站| 日本a级片电影一区二区| 亚洲欧美国产va在线影院| 欧美日韩在线视频首页| 富二代精品短视频| 亚洲视频在线免费看| 色偷偷综合社区| 亚洲精品久久久久中文字幕欢迎你| 国模精品一区二区三区色天香| 国产亚洲a∨片在线观看| 国产一区二区三区毛片| 欧美在线免费看| 亚洲爱爱爱爱爱| 亚洲奶大毛多的老太婆| 国产精品99久久久久久白浆小说| 日韩av免费在线| 国产一区视频在线播放| 国产在线999| 亚洲少妇激情视频| 亚洲老头同性xxxxx| 日本久久久久亚洲中字幕| 亚洲丝袜av一区| 亚洲精美色品网站| 国产精品精品久久久| 97香蕉久久超级碰碰高清版| 日本精品一区二区三区在线播放视频| 欧美精品videos性欧美| 国产精品香蕉在线观看| 欧美电影免费观看大全| 欧美激情精品久久久久久免费印度| 国产精品视频地址| 久久久久久久影视| 国产成人精品优优av| 亚洲激情自拍图| 日韩中文字幕免费视频| 欧美大片大片在线播放| 久久激情视频免费观看| 日韩欧中文字幕| 97久久精品在线| 麻豆成人在线看| 国产精品久久久久久超碰| 久久久精品2019中文字幕神马| 成人免费自拍视频| 国内精品久久久久久中文字幕| 国模精品一区二区三区色天香| 狠狠躁夜夜躁久久躁别揉| 91亚洲精品久久久久久久久久久久| 日韩精品一区二区视频| 国产91精品不卡视频| 亚洲第一福利视频| 欧美一区二区三区……| 中文字幕国产精品久久| 欧美激情极品视频| 91影院在线免费观看视频| 57pao国产精品一区| 萌白酱国产一区二区| 亚洲精品成a人在线观看| 国产精品专区一| 国产有码在线一区二区视频| 成人福利在线视频| 亚洲一区亚洲二区亚洲三区| 欧美精品videossex性护士| 欧洲精品久久久| 亚洲亚裔videos黑人hd| 欧美午夜丰满在线18影院|