




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
經(jīng)典JavaEE課程段鵬松第2章JSF的基本用法了解什么是JSF掌握JSF的基本用法掌握JSF的配置文件掌握托管bean的創(chuàng)建及用法掌握JSF的導航模型了解JSF的標簽用法掌握JSF的運行流程掌握JSF的消息用法課程目標目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息MVC概述MVC模型:Model-View-Controller,是一種模型、思想,和具體編程語言無關。Model1模型Model1非MVC模型,JSP作為控制器Model2模型Servlet作為前端控制器,Servlet中調用JavaBean來完成實際的業(yè)務邏輯處理。MVC的特點多個視圖對應一個模型模型返回的數(shù)據(jù)與顯示邏輯分離三層架構設計,降低了各層之間的耦合控制器的作用非常重要更符合軟件工程的思想常見的MVC框架StrutsStruts1.XStruts2.XTapestrySpring內(nèi)置的MVCJSF其他MVC框架JSF概述JSF規(guī)范本身就是JavaEE5的MVC規(guī)范,通常作為前端組件使用。提倡以頁面組件的方式隱藏傳統(tǒng)Web應用開發(fā)的細節(jié),允許開發(fā)者以傳統(tǒng)桌面編程的方式來開發(fā)Web應用。JSF的實現(xiàn)有兩種方式Sun公司的JSFRI(ReferenceImplementantion)Apache的MyFacesJSF概述JSF既是JavaWeb用戶界面標準,又是嚴格遵循模型-視圖-控制器(MVC)設計模式的框架。用戶界面代碼(視圖)與應用程序數(shù)據(jù)和邏輯(模型)的清晰分離使JSF應用程序更易于管理。所有與應用程序的用戶交互均由一個前端“Facesservlet”(控制器)來處理。JSF的運行原理JSF的優(yōu)勢允許通過拖放組件的方式來快速開發(fā)JSP頁面允許使用服務器端業(yè)務代碼來響應客戶端事件將頁面上的UI組件的值綁定到服務器端的數(shù)據(jù)模型利用可重用和可擴展的UI組件來構造用戶界面跨請求保存和恢復UI狀態(tài)Sun推出JSF的部分目的:對抗ASP.NETStruts和JSF的區(qū)別Struts是基于請求-響應模型,只是提供了更簡捷、有效、易用的封裝。JSF采用面向對象的事件通訊機制,Web編程中請求-響應模型完全被隱藏起來了。目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息下載和安裝JSFJSFRI和MyFaces從用法角度無太大區(qū)別,本課程以JSFRI為例來學習,本課程所用的JSF版本是JSF1.2_14。JSF的核心Jar包:jsf-api.jar和jsf-impl.jar,對于不同的Web服務器,安裝方式不同。(具體參考教材P57)下載和安裝JSFJSF需要JSTL標簽庫的支持NetNeans已經(jīng)內(nèi)置了JSF框架的支持在Web應用中安裝JSF標簽庫的方式<%@tagliburi=“/jsf/html”prefix=“h”%><%@tagliburi=“/jsf/core”prefix=“f”%>JSF使用步驟編寫前臺頁面即前臺的jsp或jsf頁面一般會使用較多的jsf標簽開發(fā)托管bean類似于Struts中的action+POJO類需要有相應的配置文件定義導航規(guī)則定義邏輯視圖和物理視圖之間的對應關系通過配置文件完成JSF的技術任務1、Model部分:編寫JavaBean或EJB和輔助類。2、View部分:用JSF組件的自定義標簽編寫JSP頁面。3、Control部分:將JSF組件的自定義標簽UI事件注冊到JavaBean或EJB監(jiān)聽器中,如導航過程。4、部署描述部分:Web.xml、faces-config.xml和server-config.wsdd文件的編寫。JSF的使用舉例以一個用戶登錄為例來介紹JSF的使用流程。實例操作演示用戶登錄的JSF例子了解JSF框架的使用步驟<%@tagliburi="/jsf/core"prefix="f"%><%@tagliburi="/jsf/html"prefix="h"%><html><head> <title>第一個JSF程序</title></head><body><f:view><h:form><h3>請輸入您的名稱</h3>
名稱:<h:inputTextvalue="#{}"/><p> <h:commandButtonvalue=“提交"action="login"/> </h:form></f:view></body></html>示例代碼目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息配置核心控制器在配置web.xml文件中配置FacesServlet類<servlet><servlet-name>FacesServlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>FacesServlet</servlet-name><url-pattern>/faces/*</url-pattern></servlet-mapping>核心配置器的其他參數(shù)<!--配置JSF程序狀態(tài)的保存位置,如果設置成server則保存在session中,如果保存在client中可以保證服務器重啟應用狀態(tài)也不會丟失--><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><!--程序狀態(tài)保存在客戶端--><param-value>client</param-value></context-param><!--指定JSF映射資源時的默認后綴,默認為.jsp--><context-param><param-name>javax.faces.DEFAULT_SUFFIX</param-name><param-value>.jsp</param-value></context-param><!--指定JSF所管理的生命周期實例的標識符--><context-param><param-name>javax.faces.LIFECYCLE_ID</param-name><param-value></param-value></context-param>核心配置器的其他參數(shù)
<!--指定JSF配置文件的保存位置--><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>
/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-nav.xml
</param-value></context-param><!--指定是否需要驗證自定義組件--><context-param><param-name>javax.faces.verifyObjects</param-name><param-value>true</param-value></context-param><!--指定是否需要驗證XML文件--><context-param><param-name>javax.faces.validateXml</param-name><param-value>true</param-value></context-param>核心配置器的其他參數(shù)
<!--當設置在服務器端保存狀態(tài)時,控制session保存的視圖數(shù)量,-1表示沒有限制--><context-param>
<param-name>javax.faces.NUMBER_OF_VIEWS_IN_SESSION</param-name><param-value>-1</param-value></context-param>NetBeans中使用JSF框架示意圖JSF配置文件結構默認名稱:faces-config.xml根元素:faces-config其他元素managed-beannavigation-ruleothersfaces-config.xml示例<faces-configversion="1.2"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-facesconfig_1_2.xsd"><!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> </managed-bean><!--定義導航規(guī)則與頁面--> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>JAVA</from-outcome> <to-view-id>/jsp/newJava.jsp</to-view-id> </navigation-case> </navigation-rule></faces-config>目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息托管Bean概述托管Bean是JSF應用中最重要的應用組件,因此開發(fā)JSF應用的重要任務就是開發(fā)托管Bean。一般來說,一個托管bean和一個應用頁面對應。托管Bean定義了與頁面中UI組件關聯(lián)的屬性和方法。托管Bean概述JSF使用Bean來達到邏輯層與表現(xiàn)層分離的目的,Bean的管理集中在配置文件中,只要修改配置文件,就可以修改Bean之間的相依關系。BackingBeans:在真正的業(yè)務邏輯Bean及UI組件之間搭起橋梁,在BackingBean中會呼叫業(yè)務邏輯Bean處理使用者的請求,或者是將業(yè)務處理結果放置其中,等待UI組件取出當中的值并顯示結果給使用者。托管Bean的定義和普通的JavaBean定義幾乎完全一致提供一個無參的構造器為每個屬性定義gettter和setter方法托管Bean的屬性可以綁定到如下形式之一:綁定到一個組件的值(value屬性)綁定到一個組件實例(binding屬性)綁定到一個轉換器實例(<f:convertXxx…>)綁定到一個驗證器實例(<f:validatorXxx…>)綁定到一個監(jiān)聽器實例(<f:xxxListener…>)托管Bean的配置托管Bean的基本定義:名稱 <managed-bean-name>類 <managed-bean-class> 存活范圍 <managed-bean-scope>可選設置屬性的初始值<managed-property>示例
<managed-property> <property-name>user</property-name> <value>#{user}</value></managed-property>在Java代碼中獲取Bean第一種方式:
FacesContextcontext=FacesContext.getCurrentInstance(); ValueBindingbinding= context.getApplication().createValueBinding("#{userBean}"); UserBeanbean=(UserBean)binding.getValue(context);
第二種方式: FacesContextctx=FacesContext.getCurrentInstance(); VariableResolvervariableResolver=ctx.getApplication().getVariableResolver(); UserBeanbean=(UserBean)variableResolver.resolveVariable(ctx,“userBean");第三種方式: Applicationapplication=context.getApplication(); UserBeanbean=
(UserBean)application.evaluateValueExpressionGet(
context,"#{userBean}",UserBean.class);托管Bean的作用域application:一直存活session:會話過程request:請求階段viewnone:需要時,臨時<!--配置托管Bean--> <managed-bean> <managed-bean-name>duanps</managed-bean-name> <managed-bean-class>com.dps.MyJsfAction</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>JSF的表達式語言(EL)JSF表達式語言(EL):JSFExpressionLanguage搭配JSF標簽來使用,是用來存取數(shù)據(jù)對象的一個簡易語言。以#開始,將變量或運算式放置在{與}之間。#{userB}EL的變量名也可以程序執(zhí)行過程中所聲明的名稱,或是JSFEL預定義的隱含對象。#{}或#{param['name']}如果變量是List類型或Map類型的話,則可以在[]中指定索引。#{someBean.someList[0]}#{someBean.someMap[]}JSF的表達式語言(EL)示
例說
明#{myBean.value}返回保存在關鍵字myBean
下的對象的value屬性,或者如果myBean是一個Map,則返回存儲在關鍵字value下的元素#{myBean['value']}同"#{myBean.value}“#{myArrayList[5]}返回保存在關鍵字myArrayList下的List的第5個元素#{myMap['foo']}從保存在關鍵字myMap下的Map中返回保存在關鍵字foo下的對象#{myMap[foo.bar]}從保存在myMap關鍵字下的Map中返回保存在等于表達式foo.bar的值的關鍵字下的對象#{myMap['foo'].value}從保存在關鍵字myMap下的Map中返回保存在關鍵字foo下的對象的value屬性#{myMap['foo'].value[5]}從保存在關鍵字myMap下的Map返回關鍵字foo下的List或者數(shù)組的第5個元素#{myString}返回存儲在myString關鍵字下的String對象#{myInteger}返回存儲在myInteger關鍵字下的Integer對象#{user.role=='normal'}如果關鍵字user下的對象的role屬性等于normal則返回true.否則返回falseJSF的表達式語言(EL)示
例說
明#{(user.balance-200)==0}如果關鍵字user下的對象的balance屬性減去200等于0,則返回true。否則返回falseHello#{}!返回字符串"Hello",后跟關鍵字user下的對象的name屬性。所以,如果用戶的名稱是Sean,則會返回"HelloSean!"Youare#{(user.balance>100)?'loaded':'notloaded'}如果關鍵字user下的對象的balance屬性小于100,返回"Youareloaded",否則返回"Youarenotloaded"#{myBean.methodName}返回關鍵字myBean下名為methodName的對象的方法#{20+3}返回23JSF的表達式語言(EL)語
法替
代操
作[]
訪問數(shù)組、List元素或者Map條目()
創(chuàng)建子表達式并控制求解順序?:
條件表達式:ifCondition?trueValue:falseValue+
加-
減或者負號*
乘/div除%mod模(求余)==eq等于(對對象,使用equals()方法)!=ne不等于<
lt小于>
gt大于<=le小于或等于>=ge大于或等于&&and邏輯AND||or邏輯OR!not邏輯NOTempty
測試空值(null、空字符串、數(shù)組、Map或者沒有值的Collection)JSF的表達式語言(EL)隱含變量說
明實
例applicationScope應用作用域變量的Map,以名稱作為關鍵字#{applicationScope.myVariable}cookie一個當前請求的cookie值的Map,以cookie名稱作為關鍵字#{cookie.myCookie}facesContext當前請求的FacesContext實例#{facesContext}header當前請求的HTTP首部值的Map,以header名稱作為關鍵字。如果給定的header名稱有多個值,僅返回第1個值#{header['User-Agent']}headerValues當前請求的HTTP首部值的Map,以header名稱作為關鍵字。對每個關鍵字,返回一個String數(shù)組(以便所有的值都能訪問)#{headerValues['Accept-Encoding'][3]}initParam應用初始化參數(shù)的Map,以參數(shù)名稱為關鍵字。(也稱為servlet上下文初始化參數(shù),在部署描述符中設置)#{initParam.adminEmail}param請求參數(shù)的Map,以param
名稱作為關鍵字。如果對給定的參數(shù)名稱有多個值,僅返回第1個值#{param.address}JSF的表達式語言(EL)隱含變量說
明實
例paramValues請求參數(shù)的Map,以param
名稱作為關鍵字。對每個關鍵字,返回一個String數(shù)組(以便可以訪問所有的值)#{param.address[2]}requestScope請求范圍內(nèi)的變量的Map,以名稱作為關鍵字#{requestScope.user-Preferences}sessionScope會話范圍內(nèi)的變量的Map,以名稱作為關鍵字#{sessionScope['user']}view當前視圖#{view.locale}JSF表達式示例如何將URL中的參數(shù)傳遞到JSF程序中?如果你有下面的URL:http://your_server/your_app/product.jsf?id=777,JSF頁面上,你也可以使用預定義的變量訪問參數(shù),例如:<h:outputTextvalue="#{param['id']}"/>注意:你必須直接調用該JSF頁面,并且使用servlet映射(mapping).如何添加上下文路徑到outputLink的URL中?在當前的JSF實現(xiàn)中,當在outputLink中定義的路徑以'/'開始時,沒有添加上下文路徑到URL中,請在URL中使用#{facesContext.externalContext.requestContextPath}前綴.例如:<h:outputLinkvalue="#{facesContext.externalContext.requestContextPath}/myPage.faces">托管Bean的方法處理導航的方法處理Action事件的方法處理ValueChange事件的方法處理輸入校驗的方法實際操作演示托管Bean的分類Backing托管BeanController托管BeanModel托管BeanUtility托管Bean實際操作演示注意區(qū)分Backing-Bean和Controller-Bean初始化托管Bean的屬性使用<managed-property>標簽<property-name><property-class><map-entries.../>othertags實際操作演示通過FacesContext訪問應用環(huán)境在一些特殊場景下,應用程序依然需要在托管Bean中訪問ServletAPI,JSF為這種需求提供了支持:通過FacesContext接口訪問ServletAPIFacesContext接口的方法:getResponseStream()getResponseWriter()實際操作演示目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息導航模型當用戶單擊按鈕或超鏈接時,JSF可以根據(jù)導航規(guī)則轉向到其他頁面。JSF使用<navigation-rule>標簽來配置導航規(guī)則,其有兩個有序的子元素:<from-view-id>,導航的起始頁面<navigation-case>,其子元素有:<from-action><from-outcome><to-view-id><redirect>導航模型Struts的頁面跳轉是在ActionBean中發(fā)生,execute方法最后返回一個actionForward來進行跳轉。JSF則在事件處理方法中最后返回一個字符串,由系統(tǒng)在xml文件中匹配自動進行跳轉。在JSF中也可以通過在JSP頁面的CommandButton的action屬性中直接填寫跳轉的別名直接跳轉,而不必經(jīng)過事件處理方法的處理靜態(tài)導航配置方式將commandButton或commandLink的action屬性指定為一個靜態(tài)字符串在JSf配置文件中配置導航規(guī)則實際操作演示動態(tài)導航配置方式將commandButton或commandLink的action屬性綁定到某個托管Bean的處理方法在JSf配置文件中配置導航規(guī)則實際操作演示目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息概述JSF應用的三個核心組件:JSF容器管理的托管BeanUI標簽組成的應用界面及綁定關系導航規(guī)則本節(jié)主要學習JSF的標簽用法UI標簽概述JSF提供了大量的UI標簽來簡化創(chuàng)建視圖。使用這些標簽,可以通過其value,binding,action,actionListener等屬性直接綁定到托管Bean的屬性,實例或者方法上。這也是JSF標簽與JSP標簽最大的區(qū)別。JSF包括兩組標簽庫:jsf_core.tld核心標簽庫和html_basic.tld。JSFUI組件繼承關系(部分)JSF標簽(JSF核心標簽庫)標簽說明f:validateLength驗證組件值的長度f:validateDoubleRange驗證組件值的雙精度范圍f:validateLongRange驗證組件值的長整型范圍f:validator向組件添加驗證器f:loadBundle加載資源包f:verbatim向頁面中添加標簽f:selectItem指定UISelectOne
或UISelectMany
組件的一個項目f:selectItems指定UISelectOne
或UISelectMany
組件的多個項目JSF標簽(JSF核心標簽庫)標簽說明f:view創(chuàng)建頂層視圖f:subview創(chuàng)建視圖的子視圖f:facet向組件添加facetf:param向組件添加參數(shù)f:attribute向組件添加屬性f:actionListener在父組件上注冊操作監(jiān)聽器f:valueChangeListener向父組件注冊值變更監(jiān)聽器f:converter注冊任意轉換器f:convertDateTime注冊日期時間轉換器f:convertNumber注冊數(shù)量轉換器JSF標簽(JSFHTML標簽)組件標簽說明UISelectOneh:SelectOneListbox單選列表框h:selectOneMenu單選菜單h:selectOneRadio單選按鈕集UISelectBooleanh:selectBooleanCheckbox單個復選框UISelectManyh:selectManyListbox復選框集h:selectManyCheckbox多行選擇列表框h:selectManyMenu多選菜單UIPanelh:panelGrid表示一個
HTML表格h:panelGroup組合一系列組件UIMessageh:message顯示一個組件的最近使用的消息UIMessagesh:messages顯示所有消息UIGraphich:graphicImage顯示一個圖像UIDatah:dataTable功能豐富的表格控件UIColumnh:column表示表格中的列JSF標簽(JSFHTML標簽)組件標簽說明UIFormh:form表示
HTML表單元素UIInputh:InputText單行文本輸入控件h:inputTextarea多行文本輸入控件h:InputSecret密碼輸入控件h:inputHidden隱藏字段UIOutputh:outputLabel顯示文本h:outputLink鏈接到另一頁面或某頁面上的特定位置h:outputFormat顯示格式化的信息h:outputText當前行文本輸出UICommandh:commandButton表示一個按鈕h:commandLink表示一個鏈接UI標簽的通用屬性idimmediaterenderedrequiredrequiredMessagevaluestyle……UI標簽均具有的屬性表單標簽h:form標簽產(chǎn)生HTMLform元素。如果在名為/index.jsp的JSF頁面中使用了無屬性的h:form標簽,則Form呈現(xiàn)器將產(chǎn)生如下的HTML代碼:可以為h:form指定style或styleClass屬性。建議為表單元素明確指定id屬性。一般需要開發(fā)者提供頁面布局。<formid="_id0"method="post"action="/converter/index.faces"enctype="application/x-www-form-urlencoded">JSF標簽(文本輸入)h:inputTexth:inputSecreth:inputTextarea<h:inputTextvalue="測試字符串"readonly="true"/><h:inputSecretvalue="#{form.passwd}"redisplay="true"/><h:inputTextareavalue="123456789012345"rows="3"cols="10"/><h:inputTextvalue="inputText"style="color:Yellow;background:Teal;"/>JSF標簽(命令)h:commandButtonh:commandLinkh:outputLink<h:commandButtonvalue="按鈕"onclick="alert('buttonclicked')"type="button"/><h:outputLinkvalue=""><h:graphicImagevalue="java-dot-net.jpg"/><h:outputTextvalue=""/></h:outputLink><h:commandLinkvalue="歡迎"actionListener="#{form.useLinkValue}"action="#{form.followLink}"/>JSF標簽(選擇)h:selectBooleanCheckboxh:selectManyCheckboxh:selectOneRadioh:selectOneListboxh:selectManyListboxh:selectOneMenuh:selectManyMenu選擇標簽使用示例聯(lián)系我<h:selectBooleanCheckboxvalue="#{form.contactMe}"/>privatebooleancontactMe;publicvoidsetContactMe(booleannewValue){contactMe=newValue;}publicbooleangetContactMe(){returncontactMe;}<h:selectManyCheckboxvalue="#{form.colors}"><f:selectItemitemValue="Red"itemLabel="紅色"/><f:selectItemitemValue="Blue"itemLabel="藍色"/><f:selectItemitemValue="Yellow"itemLabel="黃色"/><f:selectItemitemValue="Green"itemLabel="綠色"/><f:selectItemitemValue="Orange"itemLabel="橘黃"/></h:selectManyCheckbox><h:selectOneRadiovalue="#{form.grade}"layout="pageDirection"><f:selectItemsvalue="#{form.grades}"/></h:selectOneRadio>privateSelectItem[]grades={newSelectItem(newInteger(1),"高中"),newSelectItem(newInteger(2),"專科"),newSelectItem(newInteger(3),"本科"),newSelectItem(newInteger(4),"碩士"),newSelectItem(newInteger(5),"博士")};publicSelectItem[]getGrades(){returngrades;}<h:selectOneListboxid="onelistbox"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneListbox><h:selectOneMenuid="onemenu"value="#{form.expert}"><f:selectItemitemValue="java"itemLabel="Java"/><f:selectItemitemValue="oracle"itemLabel="Oracle"/><f:selectItemitemValue="asp"itemLabel="ASP"/><f:selectItemitemValue="jsp"itemLabel="JSP"/></h:selectOneMenu>JSF標簽(數(shù)據(jù)表格標簽)屬性說明bgcolor
設置表格背景色border設置表格邊框寬度cellpadding設置表格單元格周圍的邊距cellspacing設置表格單元格之間的間距first表格中所顯示的第一行的索引frame指定表格四周的邊框樣式;有效值:none、above、below、hsides、vsides、lhs、rhs、box、borderstyleClass指定整個表格的CSS類rowClasses行的CSS類列表,用逗號分隔列表columnClasses列的CSS類列表,用逗號分隔列表headerClass
表格標題的CSS類footerClass用于表格頁腳的CSS類rules單元格之間的行樣式;有效值:groups、rows、columns、allvar數(shù)據(jù)表格所創(chuàng)建的變量名稱,表示該值中的當前項目……<f:view><h:form><h:dataTablebgcolor="lightblue"value="#{Employeedata.employeelist}"var="employees"border="5"cellpadding="5"cellspacing="2"><h:column><f:facetname="header"><h:outputTextid="headerText1"value="姓名"/></f:facet><h:outputTextvalue="#{}"/></h:column><h:column><f:facetname="header"><h:outputTextid="headerText2"value="職位"/></f:facet><h:outputTextvalue="#{employees.position}"/></h:column></h:dataTable></h:form></f:view>JSF標簽(數(shù)據(jù)表格標簽)實際操作演示用戶注冊頁面示例目錄MVC和JSF下載、安裝JSF及使用入門解讀JSF配置托管Bean和表達式語言導航模型使用UI標簽創(chuàng)建視圖頁面JSF的運行流程和生命周期利用JSF的消息本節(jié)概述JSF是一個Web應用,也會遵循請求/響應的架構,與JSP的生命周期完全相似:客戶端發(fā)送一個HTTP請求,服務器端對請求進行處理之后,向客戶端送回HTTP響應,整個JSP生命周期完成。JSF將請求/響應的生命周期細化為更多階段,從而支持更加復雜的UI組件模型JSF將用戶請求分成兩種:初始請求:當用戶直接向某個頁面發(fā)送請求時,請求沒有附加任何的參數(shù)信息。提交表單:單擊表單的提交按鈕、提交超鏈接時,就會發(fā)生提交表單請求。JSF的6個生命周期JSF的6個生命周期JSF提供了PhaseId類來代表生命周期階段,是一個枚舉類,使用的常量有:ANY_PHASE:任意一個生命周期階段RESTORE_VIEW:恢復視圖階段APPLY_REQUEST_VALUES:應用請求值階段PROCESS_VALIDATIONS:處理輸入校驗階段UPDATE_MODEL_VALUES:更新模型的值階段INVOKE_APPLICA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版語文六年級下冊習作《寫作品梗概》精美課件
- 牛飼養(yǎng)與飼料配方優(yōu)化考核試卷
- 那首歌初三語文作文
- 碳排放核查法律問題考核試卷
- 亞麻籽種植園災害預防與應對措施考核試卷
- 介紹一種蔬菜初二語文作文
- 牧業(yè)機械化飼料作物種植與收獲考核試卷
- 生物質資源調查與評價方法研究考核試卷
- 生物細胞工程與生物醫(yī)藥考核試卷
- 真空電子器件的納米加工技術與應用考核試卷
- 貴州民族建筑知到智慧樹章節(jié)測試課后答案2024年秋貴州民族大學
- 2022年全國森林、草原、濕地調查監(jiān)測技術規(guī)程-附錄
- 【數(shù)學】第1課時 不等式的性質教學設計++2024-2025學年人教版數(shù)學七年級下冊
- 初三物理常識試卷單選題100道及答案
- 兒童主任培訓課件
- 護理巡視巡查管理制度
- 沈陽華海錕泰投資有限公司招聘筆試沖刺題2025
- 醫(yī)療器械維修人員操作題單選題100道及答案
- 2024年出海東南亞:品牌出海白皮書
- 高分子化學8-開環(huán)聚合
- 給小學生講醫(yī)療知識
評論
0/150
提交評論