自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSF和JSP是新的搭檔

開(kāi)發(fā) 后端
本文介紹JSF和JSP是一對(duì)新的搭檔。JSP是用于后臺(tái)的邏輯處理的技術(shù),而JSF恰恰相反,是使開(kāi)發(fā)人員能夠快速的開(kāi)發(fā)基于 Java 的 Web 應(yīng)用程序的技術(shù),是一種表現(xiàn)層技術(shù)。

Java在最近幾年逐漸升溫,隨著Java SE 5和Java SE 6的推出,Java的未來(lái)更顯得無(wú)比輝煌。但以Java為基礎(chǔ)的JSP在Java SE 5推出之前卻一直抬不起頭來(lái),這最重要的原因就是JSP雖然功能十分強(qiáng)大,但最大的優(yōu)點(diǎn)也是它的最大缺點(diǎn),功能強(qiáng)大就意味著復(fù)雜,尤其是設(shè)計(jì)前端界面的可視化工具不多,也不夠強(qiáng)大。因此,設(shè)計(jì)JSP頁(yè)面就變得十分復(fù)雜和繁瑣...

Java在最近幾年逐漸升溫,隨著Java SE 5和Java SE 6的推出,Java的未來(lái)更顯得無(wú)比輝煌。但以Java為基礎(chǔ)的JSP在Java SE 5推出之前卻一直抬不起頭來(lái),這最重要的原因就是JSP雖然功能十分強(qiáng)大,但最大的優(yōu)點(diǎn)也是它的最大缺點(diǎn),功能強(qiáng)大就意味著復(fù)雜,尤其是設(shè)計(jì)前端界面的可視化工具不多,也不夠強(qiáng)大。因此,設(shè)計(jì)JSP頁(yè)面就變得十分復(fù)雜和繁瑣。不過(guò),在Java SE 5推出的同時(shí),Sun為了簡(jiǎn)化JSP的開(kāi)發(fā)難度,推出了新的JavaServer Faces(簡(jiǎn)稱(chēng)JSF)規(guī)范。從而使JSP走上了康莊大道。

作為一種高度組件化的技術(shù),開(kāi)發(fā)人員可以在一些開(kāi)發(fā)工具的支持下,實(shí)現(xiàn)拖拉式編輯操作,用戶(hù)只需要簡(jiǎn)單的將 JSF 組件拖到頁(yè)面上,就可以很容易的進(jìn)行 Web 開(kāi)發(fā)了。這是其作為一種組件化的技術(shù)所具有的最大好處,我們能用的組件不光是一些比較簡(jiǎn)單的輸入框之類(lèi),還有更多復(fù)雜的組件可以使用的,比如 DataTable 這樣的表格組件, Tree 這樣的樹(shù)形組件等等。

作為一種標(biāo)準(zhǔn)的技術(shù),JSF還得到了相當(dāng)多工具提供商的支持。同時(shí)我們也會(huì)有很多很好的免費(fèi)開(kāi)發(fā)工具可以使用,前不久 Sun Java Studio Creator 2 和 Oracle JDeveloper 10g 作為免費(fèi)的支持 JSF 的開(kāi)發(fā)工具發(fā)布,給 JSF 帶來(lái)了不小的生氣。另外我們也有一些很優(yōu)秀的商業(yè)開(kāi)發(fā)工具可共選擇,BEA Workshop (原 M7 NitroX),Exadel,MyEclipse 這樣的基于 Eclipse 的插件開(kāi)發(fā)工具,為現(xiàn)在廣大的 Eclipse 用戶(hù)帶來(lái)了不小的便利,IBM 的 Rational Application Developer 和 Borland 的 JBuilder 也是很不錯(cuò)的支持 JSF 可視化開(kāi)發(fā)的商業(yè)開(kāi)發(fā)工具。

JSF和傳統(tǒng)的Web技術(shù)有著本質(zhì)上的差別,在傳統(tǒng)的Web技術(shù)需要用戶(hù)自己對(duì)瀏覽器請(qǐng)求進(jìn)行捕捉,保存客戶(hù)端狀態(tài),并且手工控制著頁(yè)面的轉(zhuǎn)向,等等。而JSF的出現(xiàn),無(wú)疑給我們帶來(lái)了巨大的便利,JSF 提供了事件驅(qū)動(dòng)的頁(yè)面導(dǎo)航模型,該模型使應(yīng)用程序開(kāi)發(fā)人員能夠設(shè)計(jì)應(yīng)用程序的頁(yè)面流。與 Struts 的方式向類(lèi)似的是,所有的頁(yè)面流信息都定義在 JSF 配置 XML 文件 (faces-config.xml) 中,而非硬編碼在應(yīng)用程序中。這很大程度簡(jiǎn)化了開(kāi)發(fā)人員開(kāi)發(fā)難度,簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)。

同時(shí)JSF也是一種遵循模型-視圖-控制器 (MVC) 模式的框架。實(shí)現(xiàn)了視圖代碼(View)與應(yīng)用邏輯(Model)的完全分離,使得使用 JSF 技術(shù)的應(yīng)用程序能夠很好的實(shí)現(xiàn)頁(yè)面與代碼的分離。所有對(duì) JSF 頁(yè)面的請(qǐng)求都會(huì)通過(guò)一個(gè)前端控制器 (FacesServlet) 處理,系統(tǒng)自動(dòng)處理用戶(hù)的請(qǐng)求,并將結(jié)果返回給用戶(hù)。這和傳統(tǒng)的 MVC 框架并沒(méi)有太大的區(qū)別。

在JSF中不僅使用了 POJO 技術(shù),而且還使用了類(lèi)似 Spring 的控制反轉(zhuǎn)(IoC) (或稱(chēng)為依賴(lài)注入-DI) 技術(shù),在 JSF 的 Backing Bean 中,我們可以把視圖所需要的數(shù)據(jù)和操作放進(jìn)一個(gè) Backing Bean 中。同時(shí)得益于 JSF 使用的 DI 技術(shù),我們可以在配置文件中初始化 Managed Bean,同時(shí)我們也可以通過(guò)這樣的技術(shù)很方便的和使用類(lèi)似技術(shù)的 Spring 進(jìn)行整合。

如何在JSP中使用JSF

只有通過(guò)JSF和JSP相結(jié)合,才能充分發(fā)揮它的功效。JSF是通過(guò)標(biāo)簽庫(kù)和JSP 進(jìn)行集成的。標(biāo)簽庫(kù)就相當(dāng)于ASP.NET的服務(wù)端組件。JSF提供了非常豐富的標(biāo)簽庫(kù),通過(guò)這些標(biāo)簽庫(kù),可以生成各種客戶(hù)端模型,如HTML、WML、 XML以及JavaScript等。通過(guò)這些標(biāo)簽,你可以很容易建立大規(guī)模的客戶(hù)端模型,并由這些標(biāo)簽自動(dòng)處理客戶(hù)端請(qǐng)求。

接下來(lái)讓我們來(lái)看一個(gè)如何使JSF和JSP在一起工作的例子。在JSF中有兩個(gè)庫(kù)。第一個(gè)叫做內(nèi)核庫(kù),在這個(gè)庫(kù)中包含了各種主要的標(biāo)簽,如配置組件、管理事件、驗(yàn)證輸入信息等。第二個(gè)庫(kù)的主要功能是將HTML和JSF的各種標(biāo)簽相對(duì)應(yīng)。每一個(gè)JSF標(biāo)簽都會(huì)對(duì)應(yīng)一個(gè)HTML組件。如UIInput標(biāo)簽對(duì)應(yīng)了HTML中的文本框或密碼框。

在JSF標(biāo)簽中文本輸入框叫做inputText,而密碼輸入庫(kù)叫inputSecret。下面是一個(gè)簡(jiǎn)單的JSF和JSP結(jié)合的用戶(hù)接口程序。

  1. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>   
  2.  ?。?@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>   
  3.   <html>   
  4.   <head>   
  5.  ?。糾eta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=GB2312">   
  6.   <title>第一個(gè)JSF程序</title>   
  7.  ?。?head>   
  8.  ?。糱ody>   
  9.   ?。糵:view>   
  10.   ?。糷:form id="simpleForm">   
  11.    <h:outputText id="favoriteLabel" value="請(qǐng)輸入一個(gè)數(shù)字:"/>   
  12.   ?。糷:inputText id="favoriteValue" value="#{simple.longValue}">   
  13.    ?。糵:validateLongrange maximum="30" minimum="0"/>   
  14.    </h:inputText>   
  15.   ?。紁/>   
  16.   ?。糷:commandButton id="submit" value="提交" action="#{simple.simpleActionMethod}"/>   
  17.    </h:form>   
  18.   ?。?f:view>   
  19.  ?。?body>   
  20.               </html> 

在上面的代碼中,我們可以了解到JSF是如何同JSP集成的。我們首先可以看到一個(gè)內(nèi)核標(biāo)簽:view。然后是幾個(gè)JSF組件。如form、 outputText、inputText以及commandButton。這幾個(gè)組件被放到form中從而開(kāi)成了form中的一部分。在程序的最開(kāi)始,必須使用import導(dǎo)入兩個(gè)標(biāo)簽庫(kù)。代碼如下。

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

上面2行代碼聲明了JSP中要使用哪一個(gè)JSF標(biāo)簽庫(kù)。內(nèi)核庫(kù)使用前綴(prefix)f聲明,而HTML庫(kù)使用前綴(prefix)h聲明。這兩個(gè)前綴并不是必須要使用,而只是一個(gè)建議。在程序中,內(nèi)核庫(kù)必須要使用,因?yàn)関iew在所有的 JSF頁(yè)中必須使用。而HTML標(biāo)簽在運(yùn)行時(shí)將JSF標(biāo)簽轉(zhuǎn)化為HTML組件,這個(gè)h前綴并不是必須的,而是JSF規(guī)范推薦使用的,這樣,我們使我們的 JSF程序更易讀。

在聲明后是幾行標(biāo)準(zhǔn)的HTML語(yǔ)句,本文不再詳述。從 f:view 開(kāi)始,是一段JSF語(yǔ)句。這段代碼如下所示:

  1. <f:view>   
  2.  ?。糷:form id="simpleForm">   
  3.  ?。糷:outputText id="favoriteLabel" value="請(qǐng)輸入一個(gè)數(shù)字:"/>   
  4.  ?。糷:inputText id="favoriteValue" value="#{simple.longValue}">   
  5.   <f:validateLongrange maximum="30" minimum="0"/>   
  6.  ?。?h:inputText>   
  7.  ?。紁/>   
  8.  ?。糷:commandButton id="submit" value="提交"   
  9.   action="#{simple.simpleActionMethod}"/>   
  10.  ?。?h:form>   
  11.             ?。?f:view> 

/f:view 標(biāo)簽預(yù)示著JSF的開(kāi)始,而它的下一個(gè)標(biāo)簽form將建立一個(gè)HTML Form。而outputText標(biāo)簽相當(dāng)于HTML中的label組件。inputText標(biāo)簽相當(dāng)于HTML中的textField組件。而 commandButton標(biāo)簽相當(dāng)于HTML中的submit按鈕。

【編輯推薦】

  1. JSF2中Ajax事件和錯(cuò)誤
  2. 簡(jiǎn)述JSF程序配置
  3. Java開(kāi)發(fā)三劍客JSF2.0、EJB3.1、JPA2.0現(xiàn)狀及發(fā)展
  4. 在JSF/JSP中集成FCKEditor
  5. JSF+Seam框架學(xué)習(xí)心得
責(zé)任編輯:佚名 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2011-06-22 10:13:58

TRILLFCoESTP

2009-06-26 11:15:08

JSF入手JSP

2009-06-23 09:33:20

FCKEditorJSFJSP

2009-07-03 14:46:42

JSP開(kāi)發(fā)框架JSFTapestry

2009-07-14 15:42:38

MyEclipse開(kāi)發(fā)

2009-07-01 15:59:07

JSP缺陷JSF規(guī)范

2009-07-07 14:04:55

JSP入門(mén)

2009-06-23 13:21:26

JSF和Spring

2009-07-14 16:25:04

MyEclipse開(kāi)發(fā)

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-22 15:35:31

JSF和Struts

2009-07-14 16:07:46

MyEclipse開(kāi)發(fā)

2009-06-22 14:22:41

JSF和Tapestr

2019-12-23 13:52:51

區(qū)塊鏈物聯(lián)網(wǎng)IOT

2009-07-02 09:13:25

什么是JSPServlet

2009-06-24 13:50:29

JSF和MVC

2009-06-24 16:42:17

JSF和Facelet

2011-06-30 10:20:38

JSFMVC

2009-06-24 16:16:30

JSF和Tapestr

2009-06-24 17:43:24

Struts和JSF
點(diǎn)贊
收藏

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