簡述學(xué)習(xí)JSF小記
學(xué)習(xí)JSF有一段時間了,從剛開始對JSF的好奇到現(xiàn)在對JSF的漸漸熟悉,花費(fèi)了不少時間,但所獲還是甚少。提到JSF,我們總喜歡把它跟jsp作比較,這很正常。我認(rèn)為JSF是站在jsp這個巨人的肩膀上,才能有如此的成就。JSF看似像是一個類似于struts的框架,但又不僅是如此。雖然 Struts和JSF都屬于表現(xiàn)層框架,但兩者分屬不同性質(zhì)的框架,后者是一種事件驅(qū)動型的組件模型,而Struts只是單純的MVC模式框架。從技術(shù)上說,JSF提供了一套類似于html的統(tǒng)一標(biāo)簽,但這種標(biāo)簽不是簡單的靜態(tài)標(biāo)簽,而是動態(tài)的。
學(xué)習(xí)JSF的起步,我們按照慣例先從一個demo開始。在使用eclipse開發(fā)***個JSF的demo前,先要去下載JSF的幾個jar包:JSF-impl.jar,JSF- api.jar,commons-digester.jar,commons-collections.jar,commons- beanutils.jar,jstl.jar,standard.jar。你可以把他們先放到Web應(yīng)用程序的/WEB-INF/lib目錄下,或者以后再添加進(jìn)去。
在eclipse中新建一個JSF項(xiàng)目,“新建”—“web project”,它跟創(chuàng)建一個jsp項(xiàng)目完全相同。完成后,右鍵項(xiàng)目名,選擇“myeclipse”—“add JSF facelets capabilities……”,這相當(dāng)于添加了對JSF的支持平臺。打開項(xiàng)目,我們可以看到熟悉的文件路徑,幾個jar包,webroot文件夾,index.jsp,web.xml文件等。不過這個多了一個face-config文件,這也是JSF項(xiàng)目與jsp項(xiàng)目的***不同之處。接下來,我們要配置web.xml文件,還有faces-config文件。
如果你以前使用過struts,那么你肯定熟悉struts里面的struts-config文件,它與faces-config何其相似。faces-config的參數(shù)配置主要有以下幾個:
1.navigation- rule(導(dǎo)航規(guī)則)。它由<from-view-id>(起始頁面),<navigation-case>(導(dǎo)航案例)兩部分組成。在“導(dǎo)航案例”中,有<from-action>(導(dǎo)航動作),<from-outcome>(導(dǎo)航結(jié)果),<to-view-id>(目的頁面)等。通過這個配置,我們告訴web應(yīng)用程序在什么時候跳轉(zhuǎn),如何跳轉(zhuǎn),以及從哪個頁面跳轉(zhuǎn)到哪個頁面。
2.managed-bean(托管bean)。托管bean主要有以下幾個部分:<managed-bean-name>(托管bean的實(shí)例名),<managed-bean-class>(托管bean類的全名),<managed-bean-scope>(托管 bean的作用域)。scope有none,request,session,applicaton等。application不常用,用得較多的就是 session和request了。request表示bean的存活時間為程序請求階段,而session的存活時間為程序交互開始,直到瀏覽器關(guān)閉或者會話結(jié)束。在faces-config的“design”視圖中,我們可以很方便地進(jìn)行配置,
下一步,我們開始在eclipse中編輯學(xué)習(xí)JSF頁面的內(nèi)容,為了簡便,我們直接對index.jsp頁面進(jìn)行修改。在頁頭我們需要添加一些jsp的page指令和常用的html,head和body標(biāo)簽(有的已經(jīng)自動生成),如以下:
◆<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" language="java"%>
◆<html><head><title>……
同時,還要添加聲明2個JSF標(biāo)準(zhǔn)的標(biāo)簽庫描述文件:
◆<%@ taglib uri="http://java.sun.com/JSF/core" prefix="f"%>(JSF標(biāo)記標(biāo)簽)
◆<%@ taglib uri="http://java.sun.com/JSF/html" prefix="h"%>(JSF的html用戶界面組件標(biāo)簽)
此外,頁面中還需要加入view和form標(biāo)簽,因?yàn)樗械腏SF組件標(biāo)簽必須定義在view這個標(biāo)簽之內(nèi)。
【編輯推薦】