Posted on 2009-02-05 15:03
董銳 閱讀(220)
評論(0) 編輯 收藏
什么是Tapestry?
歡迎來到Tapestry世界!
本文是一篇幫助人們使用Tapestry5來創(chuàng)建應(yīng)用程序的指導(dǎo)文章。不論你是否會(huì)使用Tapestry4(或Tapestry3)或者你對Tapestry完全陌生,都不影響你閱讀此篇指南,事實(shí)上你對一般的互聯(lián)網(wǎng)程序開發(fā)知道的越少,Tapestry則對你是越好的選擇,因?yàn)槟憧梢陨賹W(xué)很多!
當(dāng)然你還是需要知道以下一些知識:HTML、XML,基本的Java語言特性和一些新一點(diǎn)的東西如Java Annotations.
如果你是用servlets、JSP或Struts來開發(fā)互聯(lián)網(wǎng)應(yīng)用程序的,或許你已對很多麻煩的事情習(xí)以為常了。或許你并沒有意識到你所處的可怕處境。這些環(huán)境沒有安全保障;Struts和Servlet API不知道你程序的架構(gòu)是如何的,不知道各個(gè)不同的塊是如何連接起來的。任何一個(gè)URL地址都可以是一個(gè)Action并且每個(gè)Action都可以前進(jìn)到任何一個(gè)顯示頁面(通常是JSP頁面),這些顯示頁面會(huì)生成返回到客戶端瀏覽器的HTML頁面。作為一個(gè)開發(fā)者,你必須要做出一系列永無止盡的小而重要的決定(并且要與你的開發(fā)團(tuán)隊(duì)進(jìn)行協(xié)商),如actions、頁面、屬性等的命名規(guī)范、變量存放在HttpSession中還是存放在HttpServletRequest中等等,這些都是麻煩的事情。
傳統(tǒng)方式將很多你不想要的東西推向你:多線程編程。還記得以前學(xué)習(xí)面向?qū)ο缶幊??一個(gè)對象可以定義為一組數(shù)據(jù)以及對這些數(shù)據(jù)進(jìn)行操作的集合?當(dāng)你開始互聯(lián)網(wǎng)編程后你就必須忘記這個(gè)課程,因?yàn)榛ヂ?lián)網(wǎng)編程是多線程的。一個(gè)應(yīng)用服務(wù)器可以處理來自單個(gè)用戶的幾十、上百個(gè)請求,每一個(gè)用戶都有自己的線程,而且每一個(gè)用戶都共享相同的對象。 突然,你發(fā)現(xiàn)不能在一個(gè)對象(一個(gè)servlet或一個(gè)struts Action)中存儲數(shù)據(jù),因?yàn)椴徽撃銥橐粋€(gè)用戶存放什么數(shù)據(jù),它都會(huì)立馬被某個(gè)其他用戶的數(shù)據(jù)覆蓋。
更糟的是,你的每個(gè)對象都有一個(gè)方法:doGet()或doPost()。
期間你每天工作的大部分內(nèi)容是決定如何將你已經(jīng)存儲在java對象中的數(shù)據(jù)給打包然后把這些數(shù)據(jù)擠壓進(jìn)一個(gè)URL地址的請求參數(shù)里,然后你得再寫些代碼把這些數(shù)據(jù)給轉(zhuǎn)換回來。同時(shí)要記得修改一大堆存儲在servlet容器或Struts框架中的XML文件,讓它們知道這些決定。