精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JSF的工作方式

開發(fā) 后端
本文介紹JSF的工作方式,以及處理生命周期的各個階段和應用配置文件注冊JavaBeans。

1.JSF的工作方式

JSF應用是通過處理由頁面中組件觸發(fā)的事件來工作的。這些事件是由用戶的動作引起的。比如,當用戶單擊一個按鈕時,按鈕會觸發(fā)一個事件,通過編寫監(jiān)聽這個事件的監(jiān)聽器,JSF開發(fā)人員可以決定當特定事件發(fā)生時JSF應用應該做什么。也就是說,JSF應用是事件驅(qū)動的。圖1說明了JSF應用的處理過程。

JSF應用是事件驅(qū)動的
圖1  JSF應用是事件驅(qū)動的

當一個事件發(fā)生時(比如,用戶單擊了一個按鈕),事件通知通過HTTP發(fā)往服務(wù)器。服務(wù)器端使用叫作FacesServlet的特殊servlet處理該通知。Web容器里的每個JSF應用都有它自己的FacesServlet。
在后臺,每個JSF請求都觸發(fā)3件事情,如圖2 JSF的工作方式。

JSF的工作方式
圖2  JSF的工作方式

為了處理JSF請求,它們必須交由FacesServlet處理,指定這種重定向是通過部署描述符中的servlet和servlet-mapping標記來實現(xiàn)的。

  1. <!-- Faces Servlet --> 
  2. <servlet> 
  3. <servlet-name>Faces Servlet</servlet-name> 
  4. <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
  5. <load-on-startup>1</load-on-startup> 
  6. </servlet> 
  7. <!-- Faces Servlet Mapping --> 
  8. <servlet-mapping> 
  9. <servlet-name>Faces Servlet</servlet-name> 
  10. <url-pattern>/faces/*</url-pattern> 
  11. </servlet-mapping> 

這表示所有請求的URL中都必須包含/faces/這個字符串模式,servlet-mapping元素下的url-pattern元素指定了這一點。注意:

可以指定一個上下文參數(shù)saveStateInClient并賦給它一個true值,以此來強制JSF把狀態(tài)存放在客戶端而不是服務(wù)器端。如果您打算這么做,必須在部署描述符中的servlet元素之前加入如下的context-param元素。

  1. <context-param> 
  2. <param-name>saveStateInClient</param-name> 
  3. <param-value>false</param-value> 
  4. </context-param> 

FacesServlet生成一個叫作FacesContext的對象,它包含了處理請求所必須的信息。更確切地說,F(xiàn)acesContext對象中包含Web容器傳給FacesServlet的services方法的 ServletContext、ServletRequest及ServletResponse對象。在處理過程中,主要修改的就是這個 FacesContext對象。接著就是處理,處理器是一個叫作Lifecycle的對象。FacesServlet把控制權(quán)轉(zhuǎn)交給Lifecycle,Lifecycle對象分6個階段來處理FacesContext對象,我們稍后將會看到這些階段。注意:

Lifecycle對象處理JSP請求所需的一系列動作稱為請求處理生命周期(request processing lifecycle),這個詞自始至終貫穿本書。

JSF的工作方式允許使用一個應用配置文件來配置JSF應用。討論過Lifecycle對象的處理階段后,我們會討論如何使用這個配置文件來注冊JavaBeans。

2.理解請求處理生命周期的各個階段

Lifecycle對象分6個階段來處理JSF請求(被封裝在FacesContext對象里,而FacesContext對象就是處理過程中由Lifecycle讀取并修改的對象),過程如下:
◆重建組件樹 JSF應用里的JSP頁面被表示成一個組件樹。在這個階段,通過重建這棵樹來開始Lifecycle的處理過程。每個組件樹都有一個在整個應用范圍里惟一的標識符,此標識符是所請求URI的路徑信息部分。比如,對于一個URI為/faces/index.jsp的請求,組件樹的標識符就是 /index.jsp。生成的組件樹保存在FacesContext對象中,以備后面的處理過程所用。
◆應用請求值 在這個階段,使用請求里的當前值來更新每個組件的本地值。這些值可能來自請求參數(shù)、請求的報頭及cookie等。在這個階段的處理中,組件可以往事件隊列里加入某些事件,這些事件可在隨后的處理階段處理。
◆處理驗證 當每個組件的本地值被更新后,在此階段中,Lifecycle對象會驗證這些值的合法性。要求驗證的組件必須提供驗證邏輯的實現(xiàn)。作為選擇,開發(fā)人員可以為一個組件注冊零個或多個驗證器。如果發(fā)現(xiàn)外部驗證器,那么還會應用這些外部驗證器里的驗證邏輯來驗證本地值。
◆更新模型值 只有當組件樹中所有組件的本地值都通過驗證后,才有可能到達該階段。在這個階段里,LifeCycle更新應用的模型數(shù)據(jù)。組件在這個階段也可以排列事件。
◆調(diào)用應用 在這個階段,JSF實現(xiàn)處理所有應用層次的事件,比如提交表單或鏈接到其他頁面等。
◆呈現(xiàn)響應 在這個階段,JSF實現(xiàn)將響應發(fā)回客戶端。

由于請求處理生命周期里的應用請求值、處理驗證、更新模型值和調(diào)用應用等階段都可以在當前請求對應的FacesConetxt的實例里排列事件,因此,JSF實現(xiàn)必須在這些階段后處理這些事件。

在兩個階段中間,Lifecycle對象會檢查所有需要調(diào)用的事件監(jiān)聽器。當編寫事件監(jiān)聽器時,需要選擇事件監(jiān)聽器應在哪個階段過后調(diào)用?;蛘?,也可以編寫一個在不同階段后調(diào)用的事件監(jiān)聽器。圖3表明了處理JSF請求的各個階段。標有“處理事件”的方框表示Lifecycle對象在該處執(zhí)行事件監(jiān)聽器。

請求處理生命周期的各個階段

圖3  請求處理生命周期的各個階段

注意,事件監(jiān)聽器可能會改變處理過程。它可以指示Lifecycle對象直接跳到***一個階段,或是在當前事件處理完后馬上退出。

3.使用應用配置文件注冊JavaBeans
可以通過一個應用配置文件很容易地配置JSF應用。在這個文件里,可以注冊應用中用到的JavaBeans,通過指定頁面導航規(guī)則定義程序控制流程,注冊自定義組件及執(zhí)行其他配置工作等。

應用配置文件是一個XML文件,可以有好幾種聲明方式。最簡單的方式是把它放到WEB-INF目錄中,并且命名為faces-config.xml。應用配置文件的根元素是faces-config。下面是應用配置文件的框架:

  1. <?xml version="1.0"?> 
  2. <!DOCTYPE faces-config PUBLIC  
  3. "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"  
  4. "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> 
  5. <faces-config> 
  6. </faces-config> 

JSF應用的許多方面都可以通過應用配置文件來配置。在這里,我們主要關(guān)注如何注冊JavaBeans(用于本章稍后的例子)。第15章會詳細講解應用配置文件。在一個JSP頁面里,可以使用jsp:useBean動作告訴JSP容器,正在使用jsp:useBean動作的class特性里指定的JavaBean,如下所示:

  1. <jsp:useBean id="numberBean" class="ch02.NumberBean" scope="session"/> 

這將告訴Web容器裝入JavaBean類并且在JSP頁面被調(diào)用時創(chuàng)建一個實例。jsp:useBean動作只需要在一個頁面里聲明,而在同一個應用的所有JSP頁面里可用。在JSF應用中允許您做到這一點,而不是在應用配置文件中注冊JavaBean。

使用<jsp:useBean>有一個缺點,如果一個頁面在包含jsp:useBean動作的頁面之前被調(diào)用,Web容器會拋出一個異常。這是因為這個頁面試圖使用一個尚未創(chuàng)建的JavaBean。而使用應用配置文件注冊該JavaBean就不會有這個問題。

對于每個打算在應用配置文件里注冊的JavaBean,使用faces-config元素中的managed-bean標記,在managed-bean元素中有下列子元素:
◆managed-bean-name 標記定義從JSP頁面里引用JavaBean時使用的名稱。
◆managed-bean-class元素 指明JavaBean類。
◆managed-bean-scope元素 定義JavaBean的作用域。
下面是managed-bean的一個例子:

  1. <managed-bean> 
  2. <managed-bean-name>myBean</managed-bean-name> 
  3. <managed-bean-class>myPackage.MyBean</managed-bean-class> 
  4. <managed-bean-scope>session</managed-bean-scope> 
  5. </managed-bean> 

本例中的managed-bean元素定義了一個類型為myPackage.MyBean的JavaBean,在JSF應用的JSP頁面里可以用名稱myBean來引用它,它的作用域是session,表示開始一個用戶會話時就創(chuàng)建這個bean的一個實例。

【編輯推薦】

  1. 簡述JSF入門介紹
  2. JSF和Struts的區(qū)別概述
  3. 編寫JSF自定義復合組件的原則和技巧
  4. 選擇JSF不選Struts的十大理由
  5. Tapestry和JSF對比
責任編輯:佚名 來源: 中國IT實驗室
相關(guān)推薦

2009-07-10 13:55:48

Swing控件

2009-07-14 12:47:07

WebWork工作方式

2009-09-28 13:39:01

Hibernate工作

2010-08-06 10:41:59

Flex命名空間

2016-10-27 17:49:07

群暉群暉科技NAS

2009-08-13 18:36:29

C#數(shù)組工作方式

2010-07-22 09:01:02

SQL Server鏡

2010-01-25 14:57:49

Android數(shù)據(jù)庫

2024-03-27 14:51:23

2023-03-20 15:34:00

ChatGPT人工智能

2011-07-14 13:20:49

Servlet過濾器

2021-12-07 10:18:06

首席信息官技術(shù)發(fā)展企業(yè)管理者

2009-02-25 10:52:00

路由器原理工作方式協(xié)議

2024-04-15 08:00:00

生成式AI人力資源ChatGPT

2022-08-29 20:06:04

樓宇自控物聯(lián)網(wǎng)

2022-12-02 13:43:54

供應鏈首席供應鏈官

2013-09-04 11:16:12

物聯(lián)網(wǎng)

2015-08-18 09:24:49

云技術(shù)工作應用人工智能

2010-04-16 16:39:25

Oracle細粒度

2012-11-27 09:12:39

思杰移動云計算
點贊
收藏

51CTO技術(shù)棧公眾號

99精品在线播放| 日韩av一卡二卡三卡| 三级视频网站在线| 日韩极品在线观看| 久青草国产97香蕉在线视频| 久久国产免费视频| 日本综合字幕| 亚洲人成影院在线观看| 国产伦精品一区二区三区视频孕妇| 国产午夜福利片| 欧美日韩在线网站| 精品久久久三级丝袜| 成人在线免费播放视频| 精产国品自在线www| 波多野结衣视频一区| 国产精品久久视频| 日本一区二区三区四区五区| 狠狠综合久久av一区二区蜜桃| 91精品国产色综合久久不卡蜜臀| 男人添女人下部高潮视频在观看| 国产精品久久久久久久龚玥菲 | 人妻中文字幕一区二区三区| 欧美日韩精品| 日韩在线观看免费高清完整版| 日本精品一二三区| 亚洲伦理一区二区| 日韩欧美一区视频| 国产日本在线播放| mm1313亚洲国产精品美女| 国产无遮挡一区二区三区毛片日本| 亚洲精品欧美日韩| 岳乳丰满一区二区三区| 国产午夜精品一区二区三区欧美| 欧美精品一区二区免费| 黄色片在线观看免费| 欧美做受69| 欧美一区二区三区在线视频| 一级黄色香蕉视频| 中文字幕在线看片| 亚洲国产wwwccc36天堂| 超碰超碰超碰超碰超碰| 免费网站黄在线观看| 国产三级精品视频| 欧美日韩精品免费在线观看视频| 熟妇人妻一区二区三区四区| 国产成人综合亚洲91猫咪| 国产精品一区二区三区成人| 在线免费观看国产精品| 国产精品丝袜xxxxxxx| 欧美激情亚洲视频| 九九视频在线观看| 韩国亚洲精品| 欧美精品18videos性欧| 青青草精品在线视频| 中文精品电影| 日韩综合视频在线观看| 国产精品久久久免费看| 91一区二区| 精品国偷自产在线| 成年人av电影| 欧美精品99| 欧美福利视频在线| 国产亚洲精品久久久久久打不开 | 色av中文字幕一区| 日本二区三区视频| 亚洲精品tv久久久久久久久久| 久久精品久久久久久| 成人一级黄色大片| 亚洲五月综合| 欧美精品久久久久a| 国产一级特黄a高潮片| 99精品热视频只有精品10| 欧美在线激情网| 欧美一区免费看| 美洲天堂一区二卡三卡四卡视频 | 欧美精品一区免费| 视频二区不卡| 欧美色爱综合网| 国产三级精品三级在线| 一区二区三区国产好| 精品国产一区二区三区久久影院| av在线播放网址| 精品中文一区| 久久久av电影| 四虎永久在线精品| 日本免费在线视频不卡一不卡二| 国产精品一区二区三| 性一交一乱一精一晶| 99精品视频在线播放观看| 欧美日韩国产不卡在线看| 99riav在线| 亚洲一二三四久久| 久久久久久久少妇| 日韩成人免费av| 亚洲电影在线看| 一区二区三区在线观看免费视频| 91精品成人| 欧美亚洲成人免费| 国产精品久久久久久久免费| 高清不卡在线观看| 欧美亚州在线观看| 亚洲制服国产| 色噜噜偷拍精品综合在线| 在线观看免费不卡av| 卡通动漫国产精品| www.色综合| 国产精品午夜影院| 国产河南妇女毛片精品久久久 | 欧美韩日一区| 68精品久久久久久欧美| 136福利视频导航| 99精品欧美一区| 国产又爽又黄ai换脸| 欧美18—19sex性hd| 日韩三级在线免费观看| 亚洲人成人无码网www国产 | 日韩av片在线看| 国产一区一区| 中文字幕日韩精品在线| 亚洲黄色三级视频| 国产福利一区在线| 亚洲综合五月天| 免费亚洲电影| 亚洲国产成人精品久久| 激情高潮到大叫狂喷水| 免费日韩视频| 国产精品久久久久久久久久久久冷| 韩国精品视频| 午夜欧美一区二区三区在线播放| 无码内射中文字幕岛国片| 亚洲精品一二三**| 亚洲黄色av网站| 国产精品久久久久久久精| 亚洲男女自偷自拍| 99国内精品久久久久久久软件| 九色在线播放| 五月天激情小说综合| 欧美一级大片免费看| 日韩夫妻性生活xx| 午夜精品久久久久久久白皮肤| 亚洲天堂狠狠干| 久久色在线观看| 国产免费黄色小视频| 日韩在线成人| 日韩在线www| 久久久久久亚洲av无码专区| 成人动漫一区二区三区| 玖玖精品在线视频| 日韩欧美专区| 久久精品视频导航| 中文字幕激情视频| 欧美激情一区三区| 国产 porn| 国产成人精品一区二区免费看京| 88xx成人精品| 色噜噜在线播放| 亚洲综合激情小说| 无码人妻少妇色欲av一区二区| 精品日本12videosex| 奇米4444一区二区三区| 三级毛片在线免费看| 黄色成人在线免费| 美女扒开腿免费视频| 欧美成人午夜| 91福利视频导航| a级毛片免费观看在线| 日韩欧美另类在线| 九九热精品免费视频| 国产精品18久久久久| 日本中文字幕一级片| 国产一区二区三区亚洲综合| 中文字幕亚洲综合久久筱田步美| 中文字幕人妻一区二区三区视频 | 免费av在线| 在线视频综合导航| 男女做爰猛烈刺激| 日本亚洲三级在线| a级黄色片网站| 精品久久亚洲| 欧美激情国产精品| 无码国产精品高潮久久99| 午夜精品久久久久久久久| 9.1成人看片| 日韩国产欧美在线播放| 亚洲人久久久| 成人精品视频在线观看| 欧美日本中文字幕| 99久久亚洲精品日本无码 | 日本网站在线播放| 久久综合九色综合97婷婷女人| 成人黄色片视频| 日韩欧美三级| 国产精品一区二区三区成人| 暖暖日本在线观看| 日韩视频一区在线观看| 国产精品成人av久久| 久久综合九色综合欧美98| 中文字幕22页| 狠狠爱www人成狠狠爱综合网| 国产乱码精品一区二区三区卡| 新版的欧美在线视频| 尤物yw午夜国产精品视频明星 | 日韩三级免费观看| 日韩精品久久久久久久酒店| 国产色综合久久| 成年人性生活视频| 亚洲精品人人| 性刺激综合网| 成人激情自拍| 国产精品久久久久久久app| 成人影院www在线观看| 国产视频在线观看一区二区| 97人妻精品一区二区三区软件| 一区二区不卡在线播放| 亚洲一区视频在线播放| 国产高清一区日本| 美女一区二区三区视频| 国模一区二区三区| 色婷婷精品国产一区二区三区| 欧美专区一区| 国产精品成人在线| 日本视频在线观看| 精品小视频在线| va视频在线观看| 色婷婷综合久久久中文字幕| 欧美做爰啪啪xxxⅹ性| 成人av电影在线播放| 免费不卡av网站| 人人精品人人爱| 国产黄色一级网站| 综合久久亚洲| 图片区小说区区亚洲五月| 欧美18xxxx| 亚洲va码欧洲m码| 欧美日韩女优| 欧美性做爰毛片| 亚洲欧美韩国| 欧美黑人性猛交| 黄色一级片在线观看| 一区二区三区视频免费| 婷婷五月综合久久中文字幕| 欧美mv日韩mv国产网站app| www.久久网| 日韩欧美在线视频免费观看| 久久久久久激情| 亚洲国产成人自拍| 欧美精品日韩在线| 久久免费视频色| yy1111111| 成人蜜臀av电影| 国产人妻精品午夜福利免费| 久久夜色精品| 成年人观看网站| 国产视频欧美| 国产精品一区二区免费在线观看| 综合在线一区| 丁香六月激情网| 欧美大片专区| 欧洲金发美女大战黑人| 99久久婷婷国产综合精品电影√| 亚洲春色在线视频| 日韩电影二区| 一区高清视频| 999精品一区| 深田咏美在线x99av| 欧美激情偷拍自拍| 中文字幕欧美日韩一区二区三区| 欧美高清在线| 在线观看免费黄色片| 亚洲图片在线| 国产在线青青草| 老鸭窝91久久精品色噜噜导演| 777米奇影视第四色| 一本色道精品久久一区二区三区| 久久久精品在线视频| 日韩电影在线观看电影| 亚洲成人av免费看| 美国十次了思思久久精品导航| 91蝌蚪视频在线| 国产黄色精品视频| v天堂中文在线| 91在线观看高清| av在线播放网址| 中文字幕av一区二区三区| 婷婷国产成人精品视频| 亚洲免费观看在线视频| 欧美黑人猛猛猛| 亚洲午夜久久久久久久久电影网| 一级片免费网址| 在线精品国精品国产尤物884a| 看黄色一级大片| 欧美一级淫片007| 黄色在线视频观看网站| 色哟哟亚洲精品一区二区| 色呦呦网站在线观看| 91国产一区在线| 国产精品一区二区美女视频免费看| 亚洲一区二区免费在线| youjizzjizz亚洲| 欧美日本亚洲| 欧美日韩性在线观看| 最新av网址在线观看| 亚洲免费黄色| 2025韩国理伦片在线观看| 国产精品白丝jk黑袜喷水| 午夜天堂在线视频| av一区二区三区四区| 少妇一级黄色片| 亚洲欧美日韩小说| 在线观看日韩中文字幕| 欧美美女喷水视频| 日本美女一级片| 最近中文字幕日韩精品| 国产丝袜在线| 欧美精品久久久久久久久| 国产经典一区| 国产成人精品在线观看| 中文字幕一区图| 日韩videos| 亚洲另类黄色| 激情婷婷综合网| 国产麻豆视频一区| 三年中国中文观看免费播放| 亚洲亚洲人成综合网络| 伊人365影院| 91精品国产综合久久蜜臀| 日本一区二区三区在线观看视频| 久久伊人精品天天| 男人最爱成人网| av资源一区二区| 99精品全国免费观看视频软件| 欧洲黄色一级视频| 国产v综合v亚洲欧| 亚洲一二三四五六区| 欧美性xxxxx极品| 丰满少妇一级片| 亚洲图片欧美日产| 欧美日韩五码| 久久久久久国产精品免费免费| 女人香蕉久久**毛片精品| 亚洲热在线视频| 国产精品乱码一区二区三区软件| 五月婷婷开心网| 欧美sm极限捆绑bd| 色婷婷在线播放| 亚洲自拍偷拍福利| 色综合五月天| 国产熟女高潮视频| 久久久另类综合| 国产乱国产乱老熟| 国产视频一区在线| 在线观看爽视频| 麻豆一区区三区四区产品精品蜜桃| 欧美欧美天天天天操| 日本免费色视频| 一区二区三区在线影院| 国产乱人乱偷精品视频| 日日狠狠久久偷偷四色综合免费| 美女色狠狠久久| 欧美少妇一区| 久久久成人网| 欧美bbbbb性bbbbb视频| 色综合久久久久综合| 天堂在线一二区| 欧美另类在线观看| 欧美重口另类| 男女午夜激情视频| 91美女视频网站| 国产suv一区二区三区| 91精品国产免费| 四虎亚洲精品| 国产伦精品一区二区三区四区免费| 亚洲美女啪啪| 一级片手机在线观看| 精品成人国产在线观看男人呻吟| 成 人 黄 色 片 在线播放| 欧美大荫蒂xxx| 国产区精品视频在线观看豆花| 99色这里只有精品| 国产综合色视频| 欧美黄片一区二区三区| 亚洲国产精品小视频| 欧美动物xxx| 亚洲精品美女久久7777777| 久久精品国产99国产精品| 91香蕉视频在线播放| 91传媒视频在线播放| 日本免费中文字幕在线| 亚洲在线视频观看| 在线观看亚洲| 婷婷色一区二区三区| 欧美日韩一区二区三区四区五区| 精品麻豆一区二区三区| 精品国产乱码久久久久久蜜柚| 亚洲欧美春色| 成人黄色短视频| 欧美一区二区免费| 日本不良网站在线观看| 亚洲7777| 不卡的av在线播放|