Tapestry Developer's Guide-Chapter 4. Tapestry Pages
頁面是特殊的組件,按照組成,它有一個(gè)規(guī)范,嵌入的組件,assets,和HTML模板。
頁面沒有參數(shù),因?yàn)樗麄兪墙M件的最外層。
所有的組件,不管他們嵌套多深,都有一個(gè)頁面參數(shù)指向他們所依賴的頁面組件。頁面有一個(gè)引擎參數(shù)指向當(dāng)前所依賴的引擎。
頁面在一個(gè)池中被共享,所以在同一個(gè)web程序下頁面的單個(gè)的實(shí)例能提供給多個(gè)會(huì)話使用。甚至大量的客戶端會(huì)話請求時(shí),池也會(huì)產(chǎn)生少量頁面實(shí)例的來處理請求。池機(jī)制使得頁面實(shí)例化的數(shù)量在處理并發(fā)的情況下實(shí)例化最少頁面。
頁面可能有持久狀態(tài),對于不同的用戶,參數(shù)在請求周期內(nèi)保持特定的值,這些參數(shù)駐留在HttpSession中。頁面狀態(tài)和頁面實(shí)例是完全分離的。為了處理并發(fā)的請求,一個(gè)不同的Page從池內(nèi)被創(chuàng)建來處理請求,事實(shí)上,in a clustering environment, the request may be serviced by an entirely different server.
Tapestry有效的明顯的隱藏了這些細(xì)節(jié);當(dāng)程序的任何一部分請求一個(gè)頁面,池收回一個(gè)實(shí)例,這個(gè)實(shí)例保持先前被一個(gè)用戶已經(jīng)賦值并持久化。
“持久”,從語文的角度來講,我理解為在某段時(shí)間內(nèi)不變就是持久。在這里應(yīng)該指的是HttpSession周期。
事實(shí)上,任何組件可能有持久狀態(tài),使用Pages意味著記錄那個(gè)狀態(tài)。
引擎是一個(gè)session持久化對象。
visit對象是引擎對象的一個(gè)屬性,序列化。
Pages不是session持久化的,它們只存在java VM的內(nèi)存中,第一次創(chuàng)建,Pages和組件不需要實(shí)現(xiàn)java.io.Serializable接口。
The application engine 可以總是實(shí)例化一個(gè)新的頁面實(shí)例并別重置它之前記錄的狀態(tài)(被記錄的狀態(tài)信息被序列化到引擎上了)。
posted on 2005-11-08 17:32 bluesky 閱讀(385) 評(píng)論(0) 編輯 收藏 所屬分類: 框架應(yīng)用