天天看点

JSF简介

JSF绠€浠? 涓€銆伮?浠€涔堟槸 JSF 锛? JavaServer Faces (JSF) 鏄竴绉嶇敤浜庢瀯寤?Web 搴旂敤绋嬪簭鐨勬柊鏍囧噯 Java 妗嗘灦銆傚畠鎻愪緵浜嗕竴绉嶄互缁勪欢涓轰腑蹇冩潵寮€鍙?Java Web 鐢ㄦ埛鐣岄潰鐨勬柟娉曪紝浠庤€岀畝鍖栦簡寮€鍙戙€? JavaServer Faces浜?004骞翠笁鏈?.0鐗堟寮忔彁鍑猴紝娓呮鐨勫皢Web搴旂敤绋嬪簭鐨勫紑鍙戣€呭垝鍒嗕簡涓変釜瑙掕壊锛氱綉椤佃璁′汉鍛樸€佸簲鐢ㄧ▼搴忚璁′汉鍛樹互鍙奤I缁勪欢寮€鍙戜汉鍛樸€?浠庝娇鐢ㄧ殑瑙掑害鏉ョ湅锛岀綉椤佃璁′汉鍛樹笌搴旂敤绋嬪簭璁捐浜哄憳鍙互浠栦滑鎵€鐔熸倝鐨勬柟寮忓紑鍙戠▼搴忥紝鑰屼笉鐢ㄤ镜鍏ュ郊姝ょ殑宸ヤ綔鑼冨洿锛岃€孶I缁勪欢寮€鍙戜汉鍛樺彲浠ョ嫭绔嬬殑寮€鍙戜釜鍒粍浠讹紝缁嗚妭鐨勯儴浠界暀缁欎簡浠栦滑鏉ュ鐞嗐€? JSF 杩橀€氳繃灏嗚壇濂芥瀯寤虹殑妯″瀷-瑙嗗浘-鎺у埗鍣?(MVC) 璁捐妯″紡闆嗘垚鍒板畠鐨勪綋绯荤粨鏋勪腑锛岀‘淇濅簡搴旂敤绋嬪簭鍏锋湁鏇撮珮鐨勫彲缁存姢鎬с€? 鐢变簬 JSF 鏄€氳繃 Java Community Process (JCP) 寮€鍙戠殑涓€绉?Java 鏍囧噯锛屽洜姝ゅ紑鍙戝伐鍏蜂緵搴斿晢瀹屽叏鑳藉涓?JavaServer Faces 鎻愪緵鏄撲簬浣跨敤鐨勩€侀珮鏁堢殑鍙鍖栧紑鍙戠幆澧冦€? 聽 浜屻€伮?JSF 浣撶郴缁撴瀯锛? JSF 鐨勪富瑕佷紭鍔夸箣涓€灏辨槸瀹冩棦鏄?Java Web 搴旂敤绋嬪簭鐨勭敤鎴风晫闈㈡爣鍑嗗張鏄弗鏍奸伒寰ā鍨?瑙嗗浘锛嶆帶鍒跺櫒 (MVC) 璁捐妯″紡鐨勬鏋躲€傜敤鎴风晫闈唬鐮侊紙瑙嗗浘锛変笌搴旂敤绋嬪簭鏁版嵁鍜岄€昏緫锛堟ā鍨嬶級鐨勬竻鏅板垎绂讳娇 JSF 搴旂敤绋嬪簭鏇存槗浜庣鐞嗐€備负浜嗗噯澶囨彁渚涢〉闈㈠搴旂敤绋嬪簭鏁版嵁璁块棶鐨?JSF 涓婁笅鏂囧拰闃叉瀵归〉闈㈡湭鎺堟潈鎴栦笉姝g‘鐨勮闂紝鎵€鏈変笌搴旂敤绋嬪簭鐨勭敤鎴蜂氦浜掑潎鐢变竴涓墠绔疐acesServlet锛堟帶鍒跺櫒锛夋潵澶勭悊銆? 聽

JSF简介

涓夈€伮?JSF 鐢熷懡鍛ㄦ湡锛? FacesServlet 鍏呭綋鐢ㄦ埛鍜?JSF 搴旂敤绋嬪簭涔嬮棿鐨勭航甯︺€傚畠鍦ㄦ槑纭檺瀹氱殑 JSF 鐢熷懡鍛ㄦ湡锛堣瀹氫簡鐢ㄦ埛璇锋眰涔嬮棿鐨勬暣涓簨浠舵祦锛夌殑鑼冨洿鍐呭伐浣溿€? 1锛幝犅?褰揓SF椤甸潰涓婄殑涓€涓簨浠跺彂鐢熸椂锛堟瘮濡傦細鐢ㄦ埛鍗曞嚮浜嗕竴涓寜閽級锛屼簨浠堕€氱煡閫氳繃HTTP鍙戝線鏈嶅姟鍣ㄣ€傛湇鍔″櫒绔娇鐢‵acesServet杩欎釜鐗规畩鐨凷ervlet澶勭悊璇ラ€氱煡銆? 2锛幝犅?FacesServlet涓€鎺ユ敹鍒扮敤鎴风殑璇锋眰灏卞垱寤轰竴涓狥acesContext瀵硅薄锛圝SF涓婁笅鏂囷紝瀹冨瓨鏀句簡搴旂敤绋嬪簭鐨勬墍鏈夋暟鎹級銆傚湪澶勭悊杩囩▼涓紝涓昏淇敼鐨勫氨鏄繖涓狥aceContext瀵硅薄銆? 3锛幝犅?鎺ョ潃灏辨槸澶勭悊杩囩▼锛屽鐞嗗櫒鏄竴涓彨浣淟ifecycle鐨勫璞°€侳acesServet鎶婃帶鍒舵潈杞氦缁橪ifecycle瀵硅薄銆傝瀵硅薄鍒?涓樁娈垫潵澶勭悊FacesContext瀵硅薄浠ョ敓鎴愬搷搴旓紝鏈€鍚庡皢鍝嶅簲鍙戝洖瀹㈡埛绔€? Lifecycle瀵硅薄澶勭悊JSP璇锋眰鎵€闇€瑕佺殑涓€绯诲垪鍔ㄤ綔绉颁负璇锋眰澶勭悊鐢熷懡鍛ㄦ湡銆傝繃绋嬬姸鎬佸浘濡備笅锛?

JSF简介

鐢变簬璇锋眰澶勭悊鐢熷懡鍛ㄦ湡閲岀殑搴旂敤璇锋眰鍊笺€佸鐞嗛獙璇併€佹洿鏂版ā鍨嬪€煎拰璋冪敤搴旂敤绋嬪簭绛夐樁娈甸兘鍙互鍦ㄥ綋鍓嶇殑璇锋眰瀵瑰簲鐨凢acesContext瀹炰緥涓坊鍔犱簨浠讹紝鍥犳锛孞SF瀹炵幇蹇呴』鍦ㄨ繖浜涢樁娈靛悗澶勭悊杩欎簺浜嬩欢銆? 聽

闃舵 璇存槑
鎭㈠瑙嗗浘 涓洪€夊畾鐨勮鍥炬壘鍒版垨鍒涘缓缁勪欢鏍戙€? 涓€鏃︾敤鎴峰崟鍑籎SP椤甸潰涓婄殑閾炬帴鎴栨寜閽紝灏变細鍚姩姝ら樁娈点€侸SF搴旂敤閲岀殑JSP椤甸潰琚〃绀烘垚涓€涓粍浠舵爲銆侸SF瀹炵幇浼氳繘涓€姝ュ皢杩欎簺缁勪欢閾炬帴鍒颁簨浠跺鐞嗙▼搴忓拰楠岃瘉绋嬪簭锛屽苟灏嗚鍥句繚瀛樺湪FacesContext瀵硅薄涓紝浠ュ鍚庨潰鐨勫鐞嗚繃绋嬫墍鐢ㄣ€侳acesContext瀵硅薄鍖呭惈浜咼SF鐢ㄦ潵绠$悊褰撳墠浼氳瘽涓綋鍓嶈姹傜殑GUI缁勪欢鐘舵€佹墍闇€瑕佺殑鎵€鏈夌姸鎬佷俊鎭€?
搴旂敤璇锋眰鍊? 浣跨敤璇锋眰涓彂閫佹潵鐨勫€兼潵鏇存柊缁勪欢鏍戠殑缁勪欢鍊笺€傚洜涓鸿姹備腑鍙戦€佹潵鐨勫€奸兘鏄疭tring绫诲瀷鐨勶紝鎵€浠ュ湪鏇存柊缁勪欢鏍戠殑缁勪欢鍊间箣鍓嶏紝蹇呴』灏嗚繖浜涘€艰浆鎹负鐩稿簲绫诲瀷銆傝繖涓繃绋嬩篃鏄В鐮併€傝嫢杞崲鏈夐敊璇紝杩欎簺閿欒灏嗘坊鍔犲埌FacesContext瀵硅薄銆?
澶勭悊楠岃瘉 褰撴瘡涓粍浠剁殑鏈湴鍊艰鏇存柊鍚庯紝Lifecycle瀵硅薄閮戒細鏍规嵁杩欎簺娉ㄥ唽缁勪欢鐨勯獙璇佽鍒欐潵楠岃瘉杩欎簺鍊肩殑鍚堟硶鎬с€? 濡傛灉杈撳叆鐨勫€间笉绗﹀悎楠岃瘉瑙勫垯锛屽氨浼氬皢楠岃瘉閿欒娣诲姞鑷矲acesContext瀵硅薄锛屽苟灏嗙粍浠舵爣璁颁负鏃犳晥銆侸SF灏嗚浆鑷冲憟鐜板搷搴旈樁娈碉紝骞舵樉绀哄甫鏈夐獙璇侀敊璇秷鎭殑瑙嗗浘銆? 濡傛灉娌℃湁閬囧埌楠岃瘉閿欒锛孞SF灏嗚繘鍏ヤ笅涓€闃舵銆?
鏇存柊妯″瀷鍊? 鏇存柊涓庣粍浠剁浉鍏崇殑鍚庡彴bean锛堜篃鍙鐞哹ean锛夋垨鑰呮ā鍨嬪璞$殑鍊笺€傚彧鏈夐偅浜涗笌缁勪欢鍊肩粦瀹氬湪涓€璧风殑Bean灞炴€ф墠浼氳鏇存柊銆?
璋冪敤搴旂敤绋嬪簭 JSF鎺у埗鍣ㄨ皟鐢ㄥ簲鐢ㄧ▼搴忔潵澶勭悊搴旂敤绋嬪簭绾х殑浜嬩欢锛屽鎻愪氦涓€涓〃鍗曘€傦紙姝ら樁娈靛彲鎵ц涓氬姟閫昏緫锛?
鍛堢幇鍝嶅簲 浣跨敤褰撳墠鐨勬樉绀烘妧鏈紙濡侸SP锛夋樉绀洪€夊畾鐨勮鍥俱€?

聽 鍥涖€伮?璁剧疆 JSF 鐜锛? 1.聽聽聽 JSF搴擄細 鎮ㄥ彲浠ュ埌JSF瀹樻柟缃戠珯鐨勪笅杞藉尯涓嬭浇鍏跺帇缂╁寘 锛歨ttp://java.sun.com/javaee/javaserverfaces/download.html锛屽湪涓嬭浇鍘嬬缉鍖呭苟瑙e帇缂╀箣鍚庯紝灏嗗叾lib鐩綍涓嬬殑jar 妗f澶嶅埗鑷虫偍鐨刉eb搴旂敤绋嬪簭鐨?WEB-INF/lib鐩綍涓嬶紝鍙﹀鎮ㄨ繕闇€瑕乯stl.jar涓巗tandard.jar 鏂囦欢锛岃繖浜涙枃浠舵偍鍙互鍦╯ample 鐩綍涓嬶紝瑙e帇缂╁綋涓殑涓€涓寖渚嬶紝鍦ㄥ畠鐨?WEB-INF/lib鐩綍涓嬫壘鍒帮紝灏嗕箣涓€骞跺鍒惰嚦鎮ㄧ殑Web搴旂敤绋嬪簭鐨?WEB-INF/lib鐩綍涓嬨€? 鎮ㄦ€诲叡闇€瑕佷互涓嬬殑jar鏂囦欢锛? 1)聽聽 jsf-api.jar 锛氬畾涔変簬JSF瑙勮寖涓殑JSF API绫汇€? 2)聽聽 jsf-impl.jar 锛氱壒瀹氬疄鐜扮殑JSF绫?涓嶅悓鐨勫疄鐜扮粍缁囷紝鍖呭悕鍙兘涓嶅悓)銆? 3)聽聽 rcommons-digester.jar 锛氳В鏋恱ml鏂囦欢鐨勭被銆? 4)聽聽 commons-collections.jar 锛氭彁渚涗簡鍩轰簬Java Collection绫诲垱寤虹殑鍚勭绫汇€? 5)聽聽 commons-beanutils.jar 锛氬畾涔夊拰璁块棶JavaBean缁勪欢灞炴€х殑搴旂敤宸ュ叿銆? 6)聽聽 commons-logging.jar 锛氭棩蹇楀伐鍏枫€? 7)聽聽 jstl.jar 锛欽STL API绫汇€? 8)聽聽 standard.jar 锛欽STL 鐨勫疄鐜扮被銆? 2.聽聽聽 閰嶇疆锛? 瀵规墍鏈塉ava web搴旂敤鏉ヨ锛岄厤缃紑濮嬩簬Web搴旂敤閮ㄧ讲鎻忚堪绗︺€傚彟澶栵紝Faces鍏锋湁鑷繁鐨勬墿灞曢厤缃郴缁熶互鏀寔鍚勭闄勫姞鐗瑰緛銆? 1)聽聽 Servlet閰嶇疆锛? JSF搴旂敤闇€瑕丼ervlet锛岀О涓篎acesSevlet銆傚畠鏄暣涓簲鐢ㄧ殑鍓嶇鎺у埗鍣ㄣ€傛墍鏈夌殑璇锋眰閮介€氳繃FacesServlet鏉ュ鐞嗭細

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> 聽<display-name>guessNumber</display-name> 聽<servlet> 聽聽聽 <servlet-name>Faces Servlet</servlet-name> 聽聽聽 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 聽聽聽 <load-on-startup>1</load-on-startup> 聽</servlet> 聽<servlet-mapping> 聽聽聽 <servlet-name>Faces Servlet</servlet-name> 聽聽聽 <url-pattern>*.faces</url-pattern> 聽</servlet-mapping> </web-app>

鍦ㄤ笂闈㈢殑瀹氫箟涓紝鎴戜滑灏嗘墍鏈?faces鐨勮姹備氦鐢盕aceServlet鏉ュ鐞嗭紝FaceServlet浼氬敜璧风浉瀵圭殑.jsp缃戦〉锛屼緥濡傝姹傛槸/index.faces鐨勮瘽锛屽垯瀹為檯涓婁細鍞よ捣/index.jsp缃戦〉锛屽畬鎴愪互涓婄殑閰嶇疆锛屾偍灏卞彲浠ュ紑濮嬩娇鐢↗SF浜嗐€? 2)聽聽 JSF搴旂敤閰嶇疆锛? 聽聽聽聽聽聽 JSF鐨勫簲鐢ㄩ厤缃枃浠舵彁渚涗簡瀵规暣涓簲鐢ㄧ殑鐩稿叧淇℃伅鐨勨€滃湴鍥锯€濓紝瀹冨鐞嗚濡傚鑸鍒欍€佸彈绠ean銆佸浗闄呭寲绛夈€傝繖涓枃浠跺氨鏀剧疆鍦ㄥ簲鐢ㄧ▼搴忕殑WEB-INF鐩綍涓嬨€? 聽 浜斻€伮?绀轰緥鍙婂垎鏋愶細 绀轰緥瑕佹眰锛氳姹傜敤鎴风寽涓€涓?鍒?0涔嬮棿鐨勬暟瀛楋紝绗簩椤靛憡璇夌敤鎴风寽鐨勬槸鍚︽纭紝瑕佹眰妫€鏌ョ敤鎴疯緭鍏ョ殑鍚堟硶鎬с€? 姝ラ锛? 1.聽聽聽 鍒涘缓涓€鍚嶄负guessNumber鐨剋eb搴旂敤绋嬪簭銆傛寜鈥滆缃甁SF鐜鈥濆噯澶囧ソJSF搴撱€? 2.聽聽聽 鍒涘缓鍙楃Bean(鎴栧彨鍚庡彴Bean)锛?

package chapter5; 聽 import java.util.Random; 聽 public class UserNumberBean { 聽聽聽 聽聽聽 private int userNumber = 0; 聽聽聽 聽聽聽 private int keyNumber = 0; 聽聽聽 聽聽聽 private int minNum = 0; 聽聽聽 聽聽聽 private int maxNum = 10; 聽聽聽 聽聽聽 private String responseStr; 聽聽聽 聽聽聽 public UserNumberBean() { 聽聽聽聽聽聽聽聽 Random random = new Random(); 聽聽聽聽聽聽聽聽 keyNumber = random.nextInt(10); 聽聽聽聽聽聽聽聽 System.out.println("姝g‘鏁板瓧鏄細" + keyNumber); 聽聽聽 } 聽 聽聽聽 public int getUserNumber() { 聽聽聽聽聽聽聽 return userNumber; 聽聽聽 } 聽 聽聽聽 public int getKeyNumber() { 聽聽聽聽聽聽聽 return keyNumber; 聽聽聽 } 聽 聽聽聽 public int getMaxNum() { 聽聽聽聽聽聽聽 return maxNum; 聽聽聽 } 聽 聽聽聽 public int getMinNum() { 聽聽聽聽聽聽聽 return minNum; 聽聽聽 } 聽 聽聽聽 public String getResponseStr() { 聽聽聽聽聽聽聽 if(userNumber == keyNumber){ 聽聽聽聽聽聽聽聽聽聽聽 return "鎮ㄧ湡鑱槑锛屾偍鐚滃浜嗭紒"; 聽聽聽聽聽聽聽 }else{ 聽聽聽聽聽聽聽聽聽聽聽 return "瀵逛笉璧凤紝鎮ㄧ寽閿欎簡锛佷笉鏄?+ userNumber +"!"; 聽聽聽聽聽聽聽 } 聽聽聽 } 聽 聽聽聽 public void setUserNumber(int userNumber) { 聽聽聽聽聽聽聽 this.userNumber = userNumber; 聽聽聽 } 聽 聽聽聽 public void setKeyNumber(int keyNumber) { 聽聽聽聽聽聽聽 this.keyNumber = keyNumber; 聽聽聽 } 聽 聽聽聽 public void setMaxNum(int maxNum) { 聽聽聽聽聽聽聽 this.maxNum = maxNum; 聽聽聽 } 聽 聽聽聽 public void setMinNum(int minNum) { 聽聽聽聽聽聽聽 this.minNum = minNum; 聽聽聽 } 聽 聽聽聽 public void setResponseStr(String responseStr) { 聽聽聽聽聽聽聽 this.responseStr = responseStr; 聽聽聽 } }

鍙楃 Bean 鍏呭綋鎺у埗鍣ㄧ殑瑙掕壊锛氶€氬父瀹冨寘鍚兂瑕佷粠鐢ㄦ埛澶勬敹闆嗙殑灞炴€э紝浠ュ強澶勭悊杩欎簺灞炴€с€佹搷绾礥I鍜屾墽琛屽叾浠栦竴浜涘簲鐢ㄥ鐞嗙殑鐩戝惉鍣ㄦ柟娉曘€傚嵆瀹冩帴鏀剁敤鎴锋彁浜ょ殑鏁版嵁锛岀劧鍚庤皟鐢ㄧ浉搴旂殑妯″瀷鐨勪笟鍔℃柟娉曟潵澶勭悊鐢ㄦ埛鐨勮姹傘€? 3.聽聽聽 鍦↗SF鐨勯厤缃枃浠秄aces-config.xml(璇ユ枃浠舵斁缃湪WEB-INF涓?涓厤缃彈绠$悊鐨勫悗鍙癇ean锛?

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config xmlns="http://java.sun.com/JSF/Configuration"> 聽 <managed-bean> 聽聽聽 <managed-bean-name [q1]聽 >UserNumberBean</managed-bean-name> 聽<managed-bean-class [q2]聽 >chapter5.UserNumberBean</managed-bean-class> 聽聽聽 <managed-bean-scope [q3]聽 >session</managed-bean-scope> 聽</managed-bean> </faces-config>

聽 4.聽聽聽 寮€鍙戝熀浜嶫SF鐨勭敤鎴风晫闈細 寤虹珛JSP椤甸潰锛屼娇鐢ㄥ畾鍒舵爣绛捐〃绀哄皢浣滀负HTML鍏冪礌鐢ㄧ殑JSF缁勪欢銆? 绗竴涓〉闈細鐚滄暟椤甸潰guess.jsp锛?

<%@ page contentType="text/html; charset=GBK" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>鐚滄暟瀛?lt;/title> </head> <body bgcolor="#ffffff"> <f:view> 聽<h:form id="helloForm"> 聽聽聽 <h2> 璇风寽涓€涓?<h:outputText value="#{UserNumberBean.minNum}" /> 聽聽聽 鑷?<h:outputText value="#{UserNumberBean.maxNum}" /> 鐨勬暟瀛?</h2> 聽 <h:inputText id="userNo" 聽value="#{UserNumberBean.userNumber}"> 聽聽聽聽 <f:validateLongRange minimum="#{UserNumberBean.minNum}" 聽maximum="#{UserNumberBean.maxNum}" /> 聽聽聽 </h:inputText> 聽聽聽 <h:commandButton id="submit" action="success" value=" 鎻愪氦 " /> <br/> 聽 聽聽聽 <h:message style="color:red;" id="errors1" for="userNo"/> 聽</h:form> </f:view> </body> </html>

绗簩涓〉闈細缁撴灉椤甸潰response.jsp锛?

<%@ page contentType="text/html; charset=GBK" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>缁撴灉</title> </head> <body bgcolor="#ffffff"> <f:view> 聽<h:form id="responseForm"> 聽聽聽 <h2> 聽聽聽聽 <h:outputText id="result" value="#{UserNumberBean.responseStr}" /> 聽聽聽 </h2> 聽聽 聽 聽聽聽 <h:commandButton id="back" value=" 杩斿洖 " action="success" /> 聽</h:form> </f:view> </body> </html>

聽 5.聽聽聽 缂栧啓浜嬩欢鐩戝惉鍣ㄦ垨鑰呭鑸鍒欙細 l聽缂栧啓浜嬩欢鐩戝惉鍣ㄦ潵鍐冲畾浜嬩欢鍙戠敓鏃跺簲璇ユ湁鐨勫弽搴斻€傛瘮濡傜敤鎴峰崟鍑讳竴涓寜閽垨鎻愪氦浜嗚〃鍗曘€傚鏋滄病鏈変簨浠剁洃鍚櫒锛屽湪杩欎竴姝ュ畾涔夐〉闈㈠鑸鍒欍€? l聽瀵艰埅瑙勫垯娑夊強鍒板畾涔夊簲鐢ㄧ▼搴忎腑鍚勭椤甸潰鐨勮烦杞€? 鏈緥鏄厤缃鑸鍒欙細鍦╢aces-config.xml鏂囦欢涓細

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config xmlns="http://java.sun.com/JSF/Configuration"> 聽<managed-bean> 聽聽聽 <managed-bean-name>UserNumberBean</managed-bean-name> 聽聽聽<managed-bean-class>chapter5.UserNumberBean</managed-bean-class> 聽聽聽 <managed-bean-scope>session</managed-bean-scope> 聽</managed-bean> 聽 <navigation-rule> 聽聽聽 <from-view-id [q4]聽 >/guess.jsp</from-view-id> 聽聽聽 <navigation-case [q5]聽 > 聽聽聽聽聽 <from-outcome [q6]聽 >success</from-outcome> 聽聽聽聽聽 <to-view-id [q7]聽 >/response.jsp</to-view-id> 聽聽聽 </navigation-case> 聽</navigation-rule> 聽 聽<navigation-rule> 聽聽聽 <from-view-id>/response.jsp</from-view-id> 聽聽聽 <navigation-case> 聽聽聽聽聽 <from-outcome>success</from-outcome> 聽聽聽聽聽 <to-view-id>/guess.jsp</to-view-id> 聽聽聽 </navigation-case> 聽</navigation-rule> </faces-config>

绗竴涓鑸鍒欏彲浠ヨ繖鏍风悊瑙o細浠巊uess.jsp椤甸潰鍑哄彂鏈変釜瀵艰埅瑙勫垯锛屽畠鏈変竴涓鑸渚嬶細灏辨槸褰撶粨鏋滀负鈥渟uccesss鈥濇椂瀵艰埅鍒皉esponse.jsp銆? 娉細鍦ㄥ鑸椂锛岄璁鹃兘鏄娇鐢╢orward鐨勬柟寮忥紝鎮ㄥ彲浠ュ湪<navigation-case>涓姞鍏ヤ竴涓?lt;redirect/>瀛愬厓绱狅紝璁㎎SF鍙戦€丠TTP閲嶅畾鍚戝埌鏂扮殑瑙嗗浘銆? 6.聽聽聽 閮ㄧ讲銆佽繍琛屻€佽皟璇曪細 聽

JSF简介

聽 聽

JSF简介
JSF简介

聽 鍏€伮?JSF 鐨勭敤鎴风晫闈㈢粍浠舵ā鍨嬶細 JavaServer Faces 鐨勭湡姝e▉鍔涘湪浜庡畠鐨勭敤鎴风晫闈㈢粍浠舵ā鍨嬨€傚湪璇ユā鍨嬩腑锛屽簲鐢ㄧ▼搴忓畬鍏ㄧ敤缁勪欢闆嗗悎鏋勫缓锛岃繖浜涚粍浠跺彲浠ラ拡瀵瑰绉嶅鎴风绫诲瀷鐢ㄤ笉鍚岀殑鏂瑰紡鏉ヨ繘琛屾樉绀恒€? JSF鐨勭敤鎴风晫闈㈢粍浠舵ā鍨嬬敱UI缁勪欢绫汇€佹樉绀烘ā鍨嬨€佷簨浠舵ā鍨嬨€佹暟鎹疆鎹㈡ā鍨嬩互鍙婃暟鎹獙璇佹ā鍨嬬粍鎴愩€? 1锛幝犅?UI缁勪欢绫伙細涓庡叾浠栦笓鏈夋妧鏈紙濡?ASP.Net锛夋湁鐐圭被浼硷紝JSF 鐨?UI 缁勪欢妯″瀷鎶€鏈娇寮€鍙戜汉鍛樿兘澶熶娇鐢ㄩ鍏堟瀯寤虹殑鐢ㄦ埛鐣岄潰 (UI) 缁勪欢鏉ユ瀯寤?Web 鐢ㄦ埛鐣岄潰锛堣€岄潪瀹屽叏浠庡ご鏋勫缓鐢ㄦ埛鐣岄潰锛夛紝浠庤€屾彁渚涗簡鍓嶆墍鏈湁鐨勫紑鍙戞晥鐜囥€侸SF UI 缁勪欢鏈夊绉嶅舰寮忥紝鍙互绠€鍗曞埌鍙槸鏄剧ず鏂囨湰鐨?outputLabel锛屾垨鑰呭鏉傚埌鍙互琛ㄧず鏉ヨ嚜鏁版嵁闆嗗悎锛堝鏁版嵁搴撹〃锛夌殑琛ㄦ牸鍖栨暟鎹殑 dataTable銆? JavaServer Faces 瑙勮寖鍦ㄥ叾鍙傝€冨疄鏂戒腑鎻愪緵浜嗕竴缁勫熀鏈?UI 缁勪欢锛岃繖浜涚粍浠舵湰韬槸闈炲父鏈夌敤鐨勩€傚畠浠寘鎷袱涓粍浠跺簱锛? l聽鈥淗TML鈥濈粍浠跺簱 鈥?瀹冨ぇ閮ㄥ垎鏄犲皠浜嗘爣鍑嗙殑 HTML 杈撳叆鍏冪礌銆? l聽鈥淐ore鈥濈粍浠跺簱 鈥?瀹冭緟鍔╁父瑙佺殑搴旂敤绋嬪簭寮€鍙戜换鍔★紙濡傦紝鍥介檯鍖栧拰楠岃瘉/杞崲杈撳叆鏁版嵁锛夈€? 濡傛灉鍦↗SP椤甸潰涓娇鐢℉TML鍜孋ore缁勪欢搴擄紝蹇呴』鍦↗SP椤甸潰涓寘鍚笅鍒楃殑taglib鎸囦护銆?

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

聽 闄や簡鎻愪緵涓€涓熀鏈?UI 缁勪欢搴撲箣澶栵紝JSF API 杩樻彁渚涗簡鎵╁睍鍜屽垱寤哄畾鍒?JSF UI 缁勪欢鐨勫姛鑳斤紝浠庤€屽湪鍩烘湰缁勪欢涔嬩笂鎻愪緵鏇村鍔熻兘銆? 聽 2锛幝犅?缁勪欢鏄剧ず妯″瀷锛氱粍浠剁殑鍔熻兘閫氬父鍥寸粫鐫€涓や釜鍔ㄤ綔锛氳В鐮佸拰缂栫爜鏁版嵁銆傝В鐮佹槸鎶婅繘鍏ョ殑璇锋眰鍙傛暟杞崲鎴愮粍浠剁殑鍊肩殑杩囩▼銆傜紪鐮佹槸鎶婄粍浠剁殑褰撳墠鍊艰浆鎹㈡垚瀵瑰簲鐨勬爣绛撅紙涔熷氨鏄疕TML锛夌殑杩囩▼銆? 缁勪欢鏄剧ず鍔熻兘鏈変袱绉嶅伐浣滃疄鐜版柟寮忥細 l聽鐩存帴瀹炵幇锛氱粍浠惰嚜宸卞疄鐜拌В鐮佸拰缂栫爜銆? l聽濮旀墭瀹炵幇锛氱粍浠跺鎵樺憟鐜板櫒杩涜瑙g爜鍜岀紪鐮併€? 3锛幝犅?鏁版嵁杞崲妯″瀷锛氭彁渚涗簡鍚勫拰绫诲拰鎺ュ彛锛屼娇JSF椤甸潰涓殑鏂囨湰鏁版嵁鑳藉杞崲鎴愬師濮嬫暟鎹被鍨嬨€傚皢鏁版嵁浠庤鍥惧埌妯″瀷鍜屼粠妯″瀷鍒拌鍥剧殑鎵€鏈夎浆鎹㈤兘鏄敱杞崲妯″瀷澶勭悊鐨勩€? 4锛幝犅?浜嬩欢鍜岀洃鍚櫒妯″瀷锛欽SF瀹炵幇鐢变簨浠跺拰鐩戝惉鍣ㄧ被缁勬垚銆傛瘡褰揓SF缁勪欢婵€鍙戜簨浠舵椂锛屽氨浼氬垱寤轰竴涓簨浠跺璞★紙浜嬩欢瀵硅薄鍖呭惈鐨勪俊鎭湁椤甸潰涓摢涓粍浠剁敓鎴愪簡浜嬩欢绛夛級锛岃€屽悗JSF灏嗚皟鐢ㄧ浉搴旂洃鍚櫒鐨勬柟娉曟潵鎹曡幏浜嬩欢銆傜敱JSF缁勪欢婵€鍙戠殑涓や釜鏈€甯歌浜嬩欢鏄姩浣滀簨浠跺拰鍊兼洿鏀逛簨浠躲€? 鍔ㄤ綔浜嬩欢鍦ㄧ粍浠讹紙鎸夐挳鍜岄摼鎺ワ級琚縺娲绘椂瑙﹀彂銆傚綋鐢ㄦ埛鏇存敼缁勪欢锛堝澶嶉€夋锛夌殑鍊兼椂灏嗘縺鍙戝€兼洿鏀逛簨浠躲€? 瑕佷娇缁勪欢鑳藉鍝嶅簲鍔ㄤ綔浜嬩欢鎴栧€兼洿鏀逛簨浠躲€傚簲鐢ㄧ▼搴忓彲浠ヤ娇鐢ㄤ互涓嬫妧鏈箣涓€锛? 3)聽聽 瀹炵幇浜嬩欢鐩戝惉鍣ㄧ被浠ュ鐞嗕簨浠跺拰鍦ㄧ粍浠朵笂娉ㄥ唽浜嬩欢锛? 4)聽聽 鍦ㄥ悗鍙癇ean鐨勬柟娉曚腑瀹炵幇浜嬩欢澶勭悊锛屽苟鍦ㄧ粍浠剁殑鏂规硶缁戝畾琛ㄨ揪寮忎腑寮曠敤姝ゆ柟娉曘€? 5锛幝犅?楠岃瘉妯″瀷锛欽SF鎻愪緵浜嗗悇绉嶇被鏉ラ獙璇佸湪JSF椤甸潰涓婂悇涓帶浠朵腑鍖呭惈鐨勬暟鎹€傛楠岃瘉鍦ㄦ洿鏂版ā鍨嬩腑鐨勬暟鎹箣鍓嶈繘琛屻€備娇鐢ㄨ繖浜涙爣绛捐繘琛岀殑楠岃瘉鍖呮嫭锛氭鏌ュ瓧娈典腑鏂囨湰鐨勯暱搴﹀拰妫€鏌ュ瓧娈靛€兼槸鍚﹀湪鎸囧畾鐨勮寖鍥村唴绛夈€侸SF鎻愪緵浜嗕笁绉嶅唴寤洪獙璇佸櫒锛屽嵆锛?lt;f:validateDoubleRange>銆?lt;f:validateLongRange>銆?lt;f:validateLength>銆備娇鐢ㄨ繖浜涢獙璇佸櫒鐨勬柟娉曟槸灏嗗畠浠祵鍏ュ埌缁勪欢鏍囩鍐咃紝浠g爜濡備笅鎵€绀猴細

<h:inputText id="userNo" value="#{UserNumberBean.userNumber}"> 聽聽 <f:validateLongRange minimum="#{UserNumberBean.minNum}" maximum="#{UserNumberBean.maxNum}" /> </h:inputText>

聽聽聽聽聽 聽 聽 聽 杩欐浠g爜瑕佹眰userNo鏂囨湰瀛楁涓墍杈撳叆鐨勫€艰鍦ㄦ寚瀹氱殑鏈€灏忓€煎拰鏈€澶у€间箣闂淬€?/body>