成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談JSF的生命周期和對ajax處理的影響

開發 后端
本文介紹JSF的生命周期和對ajax處理的影響,以及解讀JSF的生命周期。

JSF一個最重要的特點就是組件化(It is all about components),組件化的特點決定了其可擴展性強和協議無關性。對一個JSF組件來說,為其定義特定的Render,該該組件將在WML或telnet中可用。

解讀JSF的生命周期:
我覺得研究B/S系統***的方法就是從web.xml開始,相比于傳統的JSP系統,JSF需要定義一個Servlet用來對HttpServletRequest進行處理,該servlet為javax.faces.webapp.FacesServlet。在該 servlet初始化階段,它將生成兩個對象:FacesContextFactory和Lifecycle。而在處理請求的service階段,則會利用FacesContextFactory對象獲得當前的FacesContext,lifecycle對象將會對該context對象進行處理。簡單的來說,FacesServlet產生一個FacesContext對象,(在JSF的處理過程中,FacesContext是唯一被修改的對象),然后將控制權交給了lifecycle對象,Lifecycle對象將會在六個生命周期中對FacesContext對象進行處理。有一點需要注意的:FacesContext是ThreadLocal的。
JSF包含六個生命周期:
1. Restore view
2. Apply request values; process events
3. Process validations; process events
4. Update model values; process events
5. Invoke application; process events
6. Render response

其中的1-5個階段將會執行lifecycle的execute()方法,而第六個階段將會執行lifecycle的render()方法。

接下來說說如何將Ajax的應用體現在JSF組件上:

1. Ajax完全獨立于JSF。即為Ajax請求創建一個額外的Servlet/Filter 控制器,這也是最自然而然的想法。通過傳統的Ajax請求方式完成該jsf組件的Ajax體現,該Ajax請求通過jsf組件中寫入的js觸發。優點是自然,不需要接觸JSF層面的東西,比較獨立;缺點是重用性差,且頁面開發者必須自己寫js代碼。

2. Ajax嵌入JSF組件中,即需要自定義組件。該方法與方法1很相似,不同的是組件開發者將會封裝js代碼和js請求獲得的呈現代碼。即Ajax應用已經包裝在此組件中了,頁面開發者不需要關心該Ajax應用是如何完成的,只需要簡單調用該組件就可以了。在Lifecycle的Apply Request Values階段,當Ajax請求處理完后,該組件的Renderer將會調用FacesContext的responseComplete()方法退出 lifecycle。

3. 使用PhaseListener判斷是否為Ajax請求,如是,立即執行responseComplete()方法,禁止進入JSF的生命周期以后的 Phase。看下PhaseListener接口的代碼,相信用過Spring的都覺得似曾相識,沒錯,它提供了2個方法beforePhase()和 afterPhase()用來對生命周期中的每一個phase進行pre-action和post-action處理。比較類似Spring中的 advice。一般選擇在PhaseListner的afterPhase()方法中進行Ajax處理,處理的過程其實也很簡單,當請求到達服務器端,PhaseListener進行處理,當Restore View階段完成后如果是Ajax請求則進入afterPhase()方法中,進行Ajax處理然后調用FacesContext的 responseComplet()方法完成lifecycle的處理。這也是目前用的最多的一種處理方法。

4. 定義獨立的Lifecycle,該Lifecycle只包含三個Phase,即:Apply Request Values; Invoke Application;RenderResponse。在進入lifecycle之前就判斷到底進入何種lifecycle,如果是Ajax請求則進入剛定義的包含三個階段的生命周期,否則則進入常規的六階段生命周期。其做法就是定義一個類似FacesServlet的選擇Lifecycle的 servlet,對指定的Ajax請求(通過url mapping)進行處理。以上是JSF的生命周期和對Ajax處理的影響

【編輯推薦】

  1. 使JSF支持帶有HTMLMessage
  2. 利用JSF和Hibernate構建Web應用
  3. 比較JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  4. JSF能否拯救WEB
  5. 各種JSF框架比較
責任編輯:佚名 來源: JavaEye
相關推薦

2009-06-11 11:28:35

JSF生命周期

2009-06-24 10:47:55

JSF生命周期

2009-06-24 10:34:39

JSF生命周期JSF應用程序

2009-06-18 13:32:39

Java線程生命周期

2015-07-08 16:28:23

weak生命周期

2024-06-03 08:00:00

2022-04-19 07:20:24

軟件開發安全生命周期SSDLC應用安全

2009-08-04 16:05:15

ASP.NET頁面生命

2012-05-28 15:37:20

WP程序生命周期

2010-07-14 10:48:37

Perl線程

2022-06-01 09:25:16

嵌套生命周期智能技術工業資產

2023-12-18 08:24:56

ViewModel數據操作Android

2012-04-28 13:23:12

Java生命周期

2011-06-16 09:31:21

ActivityAndroid

2019-10-16 10:50:13

Linux內核測試

2013-07-29 05:11:38

iOS開發iOS開發學習類的'生命周期'

2012-01-16 09:00:56

線程

2009-06-17 15:06:50

Hibernate實體

2010-07-14 10:59:15

Perl線程

2015-07-09 15:42:48

ios應用生命周期
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频一区 | 亚洲精品久久区二区三区蜜桃臀 | 欧美精品片 | 欧美日韩亚洲国产 | av在线免费不卡 | 91视频网址 | 久久91精品国产一区二区三区 | 亚洲免费在线 | 亚洲 欧美 另类 综合 偷拍 | 成人高潮片免费视频欧美 | 国产一在线观看 | 欧美午夜精品 | 91精品国产高清久久久久久久久 | 成人a视频在线观看 | 免费啪啪 | 男人天堂网址 | 91久久精品一区二区二区 | 亚洲va欧美va天堂v国产综合 | 久久国产精彩视频 | 欧美a区 | 国产精品久久久久久妇女6080 | 久久久久久久久久久久久久久久久久久久 | 国产视频一区二区在线观看 | 国产一区不卡 | 欧洲国产精品视频 | 91手机精品视频 | 国产在线观 | 中文字幕免费在线 | 亚洲精品福利在线 | wwwww在线观看 | 国产一区二区三区在线看 | 日韩av成人| 久久久久国产精品午夜一区 | 欧美午夜精品久久久久久浪潮 | 欧美一级视频免费看 | 日韩成人免费视频 | 中文字幕av一区 | 久久久久www | 精品欧美一区二区在线观看 | 中文字幕欧美在线观看 | 91精品国产91久久久久久最新 |