Posted on 2010-06-10 15:37
非洲小白臉 閱讀(357)
評(píng)論(0) 編輯 收藏 所屬分類:
框架文章
JSF六個(gè)底層原理:
--重建組件樹(shù):jsf應(yīng)用里的jsp頁(yè)面被表示成一個(gè)組件樹(shù)。在這個(gè)階段里,通過(guò)重建這棵樹(shù)開(kāi)始LifeCycle處理過(guò)程。每個(gè)組件樹(shù)都有一個(gè)在整個(gè)應(yīng)用程序范圍里唯一的標(biāo)識(shí)符,此標(biāo)識(shí)符是所請(qǐng)求URI的路徑信息部分
--應(yīng)用請(qǐng)求值:在這個(gè)階段,使用請(qǐng)求里的當(dāng)前值來(lái)更新每個(gè)組件的本地值,這些值可能來(lái)自請(qǐng)求參數(shù),請(qǐng)求的包頭及cookie。在這個(gè)階段的處理中,組件可以往事件隊(duì)列里加入某些事件,這些事件可在隨后的處理階段處理
--處理驗(yàn)證:當(dāng)每個(gè)組件的本地值被更新后,在此階段中LifeCycle對(duì)象會(huì)驗(yàn)證這些值的合法性。要求驗(yàn)證的組件必須提供驗(yàn)證邏輯的實(shí)現(xiàn)。作
為選擇,開(kāi)發(fā)人員可以為一個(gè)組件注冊(cè)0個(gè)或者多個(gè)驗(yàn)證器。如果發(fā)現(xiàn)外部驗(yàn)證器,那么還會(huì)應(yīng)用這些外部驗(yàn)證器里的驗(yàn)證邏輯來(lái)驗(yàn)證本地值。
--更新模型值:只有當(dāng)組件樹(shù)中所有的組件的本地值都通過(guò)驗(yàn)證后,才有可能到達(dá)該階段。在這個(gè)階段中,LifeCycle更新呢應(yīng)用的模型數(shù)據(jù)。組件在這個(gè)節(jié)點(diǎn)也可以排列事件。
--調(diào)用應(yīng)用:在這個(gè)階段,JSF實(shí)現(xiàn)處理所有應(yīng)用層次的時(shí)間。
--呈現(xiàn)響應(yīng):在這個(gè)階段,JSF實(shí)現(xiàn)將相應(yīng)發(fā)揮客戶端。
JSF的生命周期:
恢復(fù)視圖--應(yīng)用請(qǐng)求值--處理驗(yàn)證--呈現(xiàn)響應(yīng)--調(diào)用應(yīng)用程序--更新模型值
JSF的工作方式:
JSF應(yīng)用是通過(guò)處理由頁(yè)面中組件處罰的事件來(lái)工作的。這些事件是由用戶的動(dòng)作引起的。(JSF是事件驅(qū)動(dòng)的)
--創(chuàng)建FacesContext
--把控制權(quán)交給LifeCycle
--分六個(gè)階段處理FacesContext
ajax原理:
-----一個(gè)異步無(wú)刷新的技術(shù),主要是通過(guò)在客戶端瀏覽器內(nèi)置的XMLHttpRequest對(duì)象,發(fā)送和接收請(qǐng)求。
XMLHttpRequest對(duì)象先把請(qǐng)求發(fā)送給瀏覽器中內(nèi)置的ajax引擎,通過(guò)引擎轉(zhuǎn)發(fā)給對(duì)應(yīng)的服務(wù)器,并且引擎還要負(fù)責(zé)接收服務(wù)器的返回,
和服務(wù)器進(jìn)行交互,即時(shí)獲取服務(wù)器的狀態(tài)。還要負(fù)責(zé)把服務(wù)器的返回發(fā)送給客戶端。客戶端通過(guò)XMLHttpRequest對(duì)象對(duì)返回結(jié)果進(jìn)行解析
Http原理:
----最常見(jiàn)的網(wǎng)絡(luò)傳輸協(xié)議。速度快,無(wú)狀態(tài)。
----不管客戶端用什么頻率去請(qǐng)求服務(wù)器的資源,服務(wù)器只會(huì)去響應(yīng),而不會(huì)去保存客戶端的任何狀態(tài)
Struts原理:
----web服務(wù)器啟動(dòng)的時(shí)候讀取web.xml文檔,創(chuàng)建ActionServlet對(duì)象。
----當(dāng)客戶端請(qǐng)求發(fā)起是,ActionServlet攔截請(qǐng)求,截取特定的請(qǐng)求,獲取請(qǐng)求的名稱。
----然后讀取Struts讀取配置文件,根據(jù)請(qǐng)求的名稱讀取相關(guān)信息,保存在moduleConfig對(duì)象中
----找到其中的ActionMapping和path屬性,來(lái)進(jìn)行請(qǐng)求是否匹配的判斷
----如果發(fā)現(xiàn)有對(duì)應(yīng)的path,則將請(qǐng)求轉(zhuǎn)到對(duì)應(yīng)的Action,并且創(chuàng)建ActionForm對(duì)象,獲取從請(qǐng)求中傳遞來(lái)的參數(shù),將參數(shù)保存在ActionForm中,調(diào)用Action的execute方法
----ActionServlet接收Action處理完業(yè)務(wù)邏輯返回的結(jié)果---ActionForward對(duì)象
----然后在配置文件找到對(duì)應(yīng)的forward路徑,將顯示轉(zhuǎn)發(fā)或者重定向到找到的路徑。
Servlet MVC原理:
----服務(wù)器啟動(dòng)的時(shí)候讀取web.xml,創(chuàng)建servlet對(duì)象。
----當(dāng)客戶端發(fā)起請(qǐng)求的時(shí)候,servlet負(fù)責(zé)攔截指定的請(qǐng)求,根據(jù)請(qǐng)求的方式是get還是post調(diào)用對(duì)象的doGet或者doPost方法。
----doGet,doPost中通過(guò)request或者response控制頁(yè)面的轉(zhuǎn)發(fā)或者重定向