偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

利用JSF和Hibernate構(gòu)建Web應(yīng)用

開發(fā) 后端
本文介紹利用JSF和Hibernate構(gòu)建Web應(yīng)用,以及介紹為什么選用JSF?

JSF是一種新的用于構(gòu)架j2ee應(yīng)用用戶界面的技術(shù),它尤其適合于基于 MVC架構(gòu)的應(yīng)用中。雖已有很多文章介紹過了JSF,然而它們大多從理論高度來介紹JSF而不是面向于實(shí)際應(yīng)用。目前對(duì)于實(shí)際應(yīng)用,JSF仍有很多問題沒有解決,例如:如何使JSF適應(yīng)于MVC整體構(gòu)架中?如何將JSF與其他Java 框架整合起來?是否應(yīng)該將業(yè)務(wù)邏輯放置在JSF的backing beans中?如何處理JSF中的安全機(jī)制?更為重要的是如何利用JSF構(gòu)架現(xiàn)實(shí)世界的Web應(yīng)用?

本文將涉及到上面的這些問題,它將演示如何將JSF、Spring和Hibernate整合在一起,構(gòu)架出一個(gè)名為JCatalog的在線產(chǎn)品價(jià)目系統(tǒng)。利用該Demo,本文涵蓋了Web應(yīng)用開發(fā)的每一個(gè)階段,包括需求收集、分析,技術(shù)選擇,系統(tǒng)架構(gòu)和實(shí)現(xiàn)。本文討論了在JCatalog中涉及到的各種技術(shù)的優(yōu)點(diǎn)和缺點(diǎn)并展示了一些關(guān)鍵部分的設(shè)計(jì)方法。

本文的對(duì)象是從事基于J2ee的Web應(yīng)用架構(gòu)人員和開發(fā)人員,它并不是對(duì)JSF、SpringFramework和Hibernate的簡(jiǎn)單介紹,如果對(duì)這些領(lǐng)域不甚了解,請(qǐng)參看相關(guān)資源。

該范例的功能需求
JCatalog是一個(gè)現(xiàn)實(shí)世界的Web應(yīng)用,我首先描述JCatalog的需求,在通篇的技術(shù)決策和架構(gòu)設(shè)計(jì)時(shí)都將涉及到本部分。

在設(shè)計(jì)Web應(yīng)用的***階段是收集系統(tǒng)的功能需求,范例應(yīng)用是一個(gè)典型的電子商務(wù)應(yīng)用系統(tǒng),用戶可以瀏覽產(chǎn)品的catalog并查看產(chǎn)品的詳細(xì)情況,而管理員可以管理產(chǎn)品的catalog。通過增加一些其他功能,如inventory管理和訂單處理等,該應(yīng)用可成為一個(gè)成熟的電子商務(wù)系統(tǒng)。

Use cases
Use-case分析被用來展示范例應(yīng)用的功能需求,圖1就是該應(yīng)用的use-case圖。


use-case圖用于表示系統(tǒng)中的actors以及可能進(jìn)行的operations,在該應(yīng)用中將有七個(gè)use-case,用戶能夠?yàn)g覽產(chǎn)品 catalog和查看產(chǎn)品的詳細(xì)情況,一旦用戶登錄到系統(tǒng)中,她將成為管理員,從而可以創(chuàng)建新的產(chǎn)品,編輯已存在的產(chǎn)品或者刪除老的產(chǎn)品等。

Business rules
JCatalog必須符合以下business rules:
◆每個(gè)產(chǎn)品必須具有唯一的ID
◆每個(gè)產(chǎn)品必須屬于至少一個(gè)category
◆產(chǎn)品ID一旦創(chuàng)立不得修改

Assumptions
我們?cè)谙到y(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)中做以下假定:
◆英語講是缺省語言,且不需事先國際化
◆在Catalog不講不會(huì)超過500個(gè)產(chǎn)品
◆catalog將不會(huì)被頻繁的修改

Page flow
所有的JCatalog的pages以及它們之間的transitions關(guān)系:


該應(yīng)用中存在兩組pages:公開的internet和用于管理的intranet,其中 intranet只能被那些成功登錄到系統(tǒng)的用戶訪問。 ProductSummary不作為一個(gè)單獨(dú)的page展示給用戶,它顯示在Catalog page中的frame中。ProductList只對(duì)管理員可視,它包含用于創(chuàng)建、編輯和刪除產(chǎn)品的鏈接。

構(gòu)架設(shè)計(jì)
Web應(yīng)用開發(fā)的下一個(gè)階段是構(gòu)架設(shè)計(jì),它包括將應(yīng)用劃分為多個(gè)功能組件并將這些組件分割組合成層,高層的構(gòu)架設(shè)計(jì)應(yīng)該中立于所選用的特定技術(shù)。

多層架構(gòu)
多層架構(gòu)是將整個(gè)系統(tǒng)清晰的分為多個(gè)功能單元:client、presentation、business-logic、integration和 EIS,這將確保職責(zé)得到清晰的劃分,使得系統(tǒng)更易于維護(hù)和擴(kuò)展。具有三層或等多層的系統(tǒng)被證明比C/S模型具有更好的伸縮性和靈活性。

client層是使用和表示數(shù)據(jù)模型的地方,對(duì)于一個(gè)Web應(yīng)用,client層通常是瀏覽器,基于瀏覽器的瘦客戶端不包含任何表示邏輯,它依賴于presentation層。

presentation層將business-logic層的服務(wù)展示給用戶,它應(yīng)知道如何處理用戶的請(qǐng)求,如何同business-logic層交互,并且知道如何選擇下一個(gè)視圖顯示給用戶。

business-logic層包含應(yīng)用的business objects和business services。它接受來在于presentation層的請(qǐng)求、基于請(qǐng)求處理業(yè)務(wù)邏輯。業(yè)務(wù)邏輯層組件將受益于系統(tǒng)級(jí)的服務(wù),如安全管理、事務(wù)管理和資源管理等。

integration層是介于business-logic層和EIS層之間的橋梁,它封裝了與EIS層交互的邏輯。有時(shí),將integration層和business-logic層合稱為中間層。

應(yīng)用的數(shù)據(jù)被保存在EIS層中,它包括關(guān)系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫和以及遺留系統(tǒng)等。

JCatalog的構(gòu)架設(shè)計(jì)
JCatalog的構(gòu)架設(shè)計(jì)以及如何應(yīng)用于多層構(gòu)架系統(tǒng)中。


該應(yīng)用采用了多層非分布式的構(gòu)架,系統(tǒng)的分層以及每一層中選擇的技術(shù),它同時(shí)又是該范例的部署圖,它的presentation、 business-logic和integration層將存在于同一個(gè)web容器中。定義良好的接口將孤立每一層的職責(zé),這一架構(gòu)使得應(yīng)用更為簡(jiǎn)單和更好的伸縮性。

對(duì)于presentation層,經(jīng)驗(yàn)表明,***的方法是選擇已存在的并已得到證明了的Web應(yīng)用框架,而不是自己去設(shè)計(jì)和開發(fā)新的框架。我們擁有多個(gè)可選擇的框架,如Struts,WebWork和JSF等,在JCatalog中,我們選擇采用JSF。

EJB 和POJO都可以用來創(chuàng)建業(yè)務(wù)邏輯層,如果應(yīng)用是分布式的,采用具有remote接口的EJB是一個(gè)好的選擇;由于JCatalog是一個(gè)典型的不需要遠(yuǎn)程訪問的Web應(yīng)用,因此選用POJO,并充分利用Spring Framework的幫助,將是實(shí)現(xiàn)業(yè)務(wù)邏輯層的更好選擇。

integration層利用關(guān)系型數(shù)據(jù)庫事先數(shù)據(jù)的持續(xù)化,存在多種方法可用來實(shí)現(xiàn):

◆JDBC:這是最為靈活的方法,然而,低級(jí)的JDBC難以使用,而且質(zhì)量差的JDBC代碼很難運(yùn)轉(zhuǎn)良好
◆Entity beans:CMP的Entity bean是一種分離數(shù)據(jù)訪問代碼和處理ORM的昂貴的方法,它是以應(yīng)用服務(wù)器為中心的方法,即entity bean不是將應(yīng)用與某種數(shù)據(jù)庫類型而是EJB容器約束在一起。
◆O/R mapping framework:一個(gè)ORM框架采用以對(duì)象為中心的方法實(shí)現(xiàn)數(shù)據(jù)持續(xù)化,一個(gè)以對(duì)象為中心的應(yīng)用易于開發(fā)并具有高度的可移植性。在該領(lǐng)域中存在幾個(gè)框架可用—JDO、Hibernate、TopLink以及CocoBase等。在我們的范例中將選用Hibernate。

現(xiàn)在,我們將討論每一層中的設(shè)計(jì)問題,由于JSF是一個(gè)相對(duì)較新的技術(shù),因此將著重于它的使用:

presentation層和JSF
表示層的功能是收集用戶的輸入、展示數(shù)據(jù)、控制頁面導(dǎo)航并將用戶的輸入傳遞給業(yè)務(wù)邏輯層,表示層同時(shí)需要驗(yàn)證用戶的輸入以及維護(hù)應(yīng)用的session狀態(tài)。在下面幾部分中,我將討論表示層設(shè)計(jì)時(shí)的考慮和模式,并說明選擇JSF作為JCatalog表示層的原因。

MVC
MVC是Java-Blueprints推薦的架構(gòu)設(shè)計(jì)模式,MVC將幾個(gè)方面分離開來,從而減少代碼的重復(fù),它以控制為中心并使得應(yīng)用更具擴(kuò)展性。MVC同時(shí)可幫助具有不同技能的用戶更關(guān)注于自己的技能,通過定義良好的接口進(jìn)行相互合作。MVC是表示層的架構(gòu)設(shè)計(jì)模式。

JSF
JSF 是Web應(yīng)用的服務(wù)器端用戶組件框架,它包含以下API:表示UI組件、管理它們的狀態(tài)、處理事件、服務(wù)器端驗(yàn)證、數(shù)據(jù)轉(zhuǎn)換、定義頁面導(dǎo)航、支持國際化,并為這些特性提供擴(kuò)展能力。它同時(shí)包括兩個(gè)JSP的tag庫以在JSP頁面中表示UI組件,以及將組件wire為服務(wù)器端對(duì)象。

JSF和MVC
JSF非常適合于基于MVC的表示層架構(gòu),它在行為和表示之間提供了清晰的分離,它使得你可以采用熟悉的UI組件和web層概念而無需受限于某種特殊的腳本技術(shù)或標(biāo)記語言。

JSF backing beans是JSF的Model層,此外,它同樣包含actions,action是controller層的擴(kuò)展,用于將用戶的請(qǐng)求委派給業(yè)務(wù)邏輯層。這里請(qǐng)注意,從整體的應(yīng)用構(gòu)架看,業(yè)務(wù)邏輯層也被稱為model層。包含JSF標(biāo)簽的JSP頁面是表示層,F(xiàn)aces Servlet提供了controller的功能。

為什么選用JSF?
JSF不僅僅是另外一個(gè)Web框架,下面這些特性是JSF區(qū)別于其他Web框架之所在:
◆類Swing的面向?qū)ο蟮腤eb應(yīng)用開發(fā):服務(wù)器端有狀態(tài)的UI組件模型,配合event listeners和handlers,促進(jìn)了面向?qū)ο蟮腤eb應(yīng)用開發(fā)。
◆backing-bean管理: backing bean是與頁面中使用的UI組件相關(guān)聯(lián)的javabean組件,backing-bean管理將UI組件對(duì)象的定義同執(zhí)行應(yīng)用相關(guān)處理和擁有數(shù)據(jù)的對(duì)象分離開來。JSF在合適的范圍內(nèi)保存和管理這些backing-bean實(shí)例。
◆可擴(kuò)展的UI模型:JSF的UI模型是可配置的、可重用的,用以構(gòu)建JSF應(yīng)用的用戶界面。你可以通過擴(kuò)展標(biāo)準(zhǔn)的UI組件來開發(fā)出更為復(fù)雜的組件,例如菜單條、樹組件等。
◆靈活的rendering模型:renderer分離了UI組件的功能和顯示,多個(gè)renderers可創(chuàng)建和用來為同一客戶端或不同的客戶端定義不同的顯示。
◆可擴(kuò)展的轉(zhuǎn)換和驗(yàn)證模型:基于標(biāo)準(zhǔn)的converter和validator,你可以開發(fā)出自己的可提供更好的模型保護(hù)的converter和validator。

盡管如此,JSF目前尚未成熟,隨同JSF發(fā)布的 components、converters和validators都是最基礎(chǔ)的,而且per-component驗(yàn)證模型不能處理components 和validators間的many-to-many驗(yàn)證。此外,JSF標(biāo)簽不能與JSTL間無縫的整合在一起。

在下面的章節(jié)中,我將討論幾個(gè)在JCatalog實(shí)現(xiàn)中的關(guān)鍵部分和設(shè)計(jì)決策。我首先解釋managed bean的定義和使用以及JSF中的backing bean,然后,我將說明如何處理安全、分頁、caching、file upload、驗(yàn)證以及錯(cuò)誤信息定制。

Managed bean,backing bean,view object 和domain object model
JSF 中引入了兩個(gè)新的名詞:managed bean和backing bean。JSF提供了一個(gè)強(qiáng)大的managed-bean工具,由JSF來管理的JavaBean對(duì)象稱為managed-bean,一個(gè) managed bean表述了一個(gè)bean如何被創(chuàng)建和管理,它不包含該bean的任何功能性描述。

backing bean定義了與頁面中使用的UI組件相關(guān)聯(lián)的屬性和處理邏輯。每一個(gè)backing-bean屬性邦定于一個(gè)組件實(shí)例或某實(shí)例的value。一個(gè) backing-bean同時(shí)定義了一組執(zhí)行組件功能的方法,例如驗(yàn)證組件的數(shù)據(jù)、處理組件觸發(fā)的事件、實(shí)施與組件相關(guān)的導(dǎo)航等。

一個(gè)典型的JSF應(yīng)用將其中的每個(gè)頁面和一個(gè)backing-bean結(jié)合起來,然而在現(xiàn)實(shí)應(yīng)用中,強(qiáng)制的執(zhí)行這種one-on-one的關(guān)系不是一種理想的解決方案,它可能會(huì)導(dǎo)致代碼重復(fù)等問題。在現(xiàn)實(shí)的應(yīng)用中,多個(gè)頁面可以共享一個(gè)backing-bean,例如在JCatalog中, CreateProduct和EditProduct將共享同一個(gè)ProductBean定義。

model對(duì)象特定于表示層中的一個(gè) view對(duì)象,它包含必須顯示在view層的數(shù)據(jù)以及驗(yàn)證用戶輸入、處理事件和與業(yè)務(wù)邏輯層交互的處理邏輯等。在基于 JSF的應(yīng)用中backing bean就是view對(duì)象,在本文中backing bean和view對(duì)象是可互換的名詞。

對(duì)比于struts中的 ActionForm和Action,利用JSF中的backing-bean進(jìn)行開發(fā)將能更好的遵循面向?qū)ο蠓椒?,一個(gè) backing-bean不僅包含view數(shù)據(jù),而且還包含與這些數(shù)據(jù)相關(guān)的行為,而在struts中,Action和ActionForm分別包含數(shù)據(jù)和邏輯。

我們都應(yīng)該聽說過domain object model,那么,domain object model和view對(duì)象之間有什么區(qū)別呢?在一個(gè)簡(jiǎn)單的Web應(yīng)用中,一個(gè)domain object model能夠橫穿所有層中,而在復(fù)雜的應(yīng)用中,需要用到一個(gè)單獨(dú)的view對(duì)象模型。domain object model應(yīng)該屬于業(yè)務(wù)邏輯層,它包含業(yè)務(wù)數(shù)據(jù)和與特定業(yè)務(wù)對(duì)象相關(guān)的業(yè)務(wù)邏輯;一個(gè)view對(duì)象包含presentation-specific的數(shù)據(jù)和邏輯。將view對(duì)象從domain object model中分離出來的缺點(diǎn)是在這兩個(gè)對(duì)象模型之間必將出現(xiàn)數(shù)據(jù)映射。在JCatalog中,ProductBeanBuilder和 UserBeanBuilder利用reflection-based Commons BeanUtils來實(shí)現(xiàn)數(shù)據(jù)映射。

安全
目前,JSF沒有內(nèi)建的安全特性,而對(duì)于范例應(yīng)用來說安全需求是非?;A(chǔ)的:用戶登錄到administration intranet中僅需用戶名和密碼認(rèn)證,而無需考慮授權(quán)。
針對(duì)于JSF的認(rèn)證,已有幾種方法提出:
◆利用一個(gè)backing bean:這一個(gè)方法非常簡(jiǎn)單,然而它卻將backing bean與特殊的繼承關(guān)系結(jié)合起來了
◆利用JSF的ViewHandler decorator:這一方法中,安全邏輯緊密地與一特定Web層技術(shù)聯(lián)系在了一起
◆利用servlet filter:一個(gè)JSF應(yīng)用與其他的Web應(yīng)用沒有什么兩樣,filter仍是處理認(rèn)證檢查的***地方,這種方法中,認(rèn)證邏輯與Web應(yīng)用分離開來

在我們的范例程序中,SecurityFilter類被用來處理用戶的認(rèn)證,目前,受保護(hù)的資源只包含三個(gè)頁面,出于簡(jiǎn)單的考慮,將它們的位置被硬編碼到Filter類中。

分頁
該應(yīng)用中的Catalog頁面需要分頁,表示層可用來處理分頁,即它取出所有的數(shù)據(jù)并保存在這一層;分頁同樣可在business-logic層、 integration層、甚至EIS層中實(shí)現(xiàn)。由于在JCatalog中假設(shè)不超過500個(gè)產(chǎn)品,因此所有的產(chǎn)品信息能存放在一個(gè)user session中,我們將分頁邏輯放在了ProductListBean中,與分頁相關(guān)的參數(shù)將通過JSF managed-bean工具配置。

Caching
Caching 是提高Web應(yīng)用性能的最重要技術(shù)之一,在應(yīng)用構(gòu)建中的很多層中都可以實(shí)現(xiàn)caching。JSF managed-bean工具可以使在表示層實(shí)現(xiàn)caching非常容易。通過改變一個(gè)managed bean的范圍,這個(gè)managed bean中包含的數(shù)據(jù)可以在不同的范圍內(nèi)緩存。

范例應(yīng)用中采用了兩級(jí)caching,***級(jí)caching存在于業(yè)務(wù)邏輯層,CachedCatalogServiceImpl類維護(hù)了一個(gè)所有產(chǎn)品和目錄的讀寫cache,Spring將該類作為一個(gè)singleton service bean來管理,所以,一級(jí)cache是一個(gè)應(yīng)用范圍的讀寫cache。

為了簡(jiǎn)化分頁邏輯并進(jìn)而提高應(yīng)用的速度,產(chǎn)品同樣在session范圍內(nèi)緩存到表示層,每一個(gè)用戶維護(hù)著他自己的ProductListBean,這一方法的缺點(diǎn)是內(nèi)存的消耗和數(shù)據(jù)的失效問題,在一個(gè)用戶session中,如果管理員更改了catalog,用戶可到的將是失效的數(shù)據(jù),然而,由于我們假設(shè)應(yīng)用的數(shù)據(jù)不會(huì)經(jīng)常的改變,所以這些缺點(diǎn)將能夠忍受。

File upload
目前的JSF Sun參考實(shí)現(xiàn)中不支持file upload。Struts雖已具有非常不錯(cuò)的file upload能力,然而要想使用這一特性需要Struts-Faces整合庫。在JCatalog中,一個(gè)圖像與一個(gè)產(chǎn)品相關(guān)聯(lián),在一個(gè)用戶創(chuàng)建了新的產(chǎn)品后,她必須將相應(yīng)的圖片上傳,圖片將保存在應(yīng)用服務(wù)器的文件系統(tǒng)里,產(chǎn)品的ID就是圖像名稱。

業(yè)務(wù)邏輯層和Spring Framework
業(yè)務(wù)對(duì)象和業(yè)務(wù)服務(wù)存在于業(yè)務(wù)邏輯層中,一個(gè)業(yè)務(wù)對(duì)象不僅包含數(shù)據(jù),而且包含相應(yīng)的邏輯,在范例應(yīng)用中包含三個(gè)業(yè)務(wù)對(duì)象:Product、Category和User。

業(yè)務(wù)服務(wù)與業(yè)務(wù)對(duì)象交互并提供更高級(jí)的業(yè)務(wù)邏輯,需要首先定義一個(gè)正式的業(yè)務(wù)接口,它是直接與終端用戶交互的服務(wù)接口。在JCatalog中,通過在 Spring Framework幫助下的POJO實(shí)現(xiàn)業(yè)務(wù)邏輯層,其中共有兩個(gè)業(yè)務(wù)服務(wù):CatalogService包含Catalog管理相關(guān)的業(yè)務(wù)邏輯, UserService中包含User管理邏輯。

Spring是基于IoC概念的框架,在范例應(yīng)用中用到的Spring特性包括:
◆Bean management with application contexts:Spring可以有效地組織我們的中間層對(duì)象,它能夠消除singleton的proliferation,并易于實(shí)現(xiàn)良好的面向?qū)ο缶幊谭椒ǎ础熬幊痰浇涌凇薄?BR>◆Declarative Transaction management: Spring利用AOP實(shí)現(xiàn)事務(wù)管理,而無需借助于EJB容器,利用這種方法,事務(wù)管理可以用于任何POJO中。Spring的事務(wù)管理不局限于JTA,而是可以采用不同的事務(wù)策略,在范例應(yīng)用中,我們將使用declarative transaction management with Hibernate transaction。
◆Data-access exception hierarchy:Spring提供了非常好的異常來代替SQLException,為利用Spring的異常,必須在Spring的配置文件中定義以下異常轉(zhuǎn)換:<property name="dataSource"><font color="#a52a2a"><ref bean="dataSource"></ref></font></property>
在范例應(yīng)用中,如果一個(gè)具有重復(fù)ID的新產(chǎn)品被插入,將會(huì)拋出DataIntegrityViolationException,這一異常將被catch并rethrown一個(gè)DuplicateProductIdException。這樣,該異常就可以與其它的異常區(qū)別處理。
◆Hibernate integration:Spring與Hibernate這樣的ORM框架整合的非常好,Spring提供了對(duì)Hibernate session的高效和安全的處理,它可通過application context配置Hibernate的SessionFactories和JDBC數(shù)據(jù)源,并使得應(yīng)用易于測(cè)試。

Integration層和Hibernate
Hibernate是一個(gè)開源的ORM框架,它可以支持所有主流SQL數(shù)據(jù)庫系統(tǒng),Hibernate的查詢語言為對(duì)象和關(guān)系架起了非常好的橋梁。Hibernate提供了強(qiáng)大的功能以實(shí)現(xiàn):數(shù)據(jù)讀取和更新、事務(wù)管理、數(shù)據(jù)連接池、查詢和實(shí)體關(guān)系管理等。

Data Access Ojbect(DAO)
JCatalog 中采用了Dao模式,該模式抽象和封裝了所有對(duì)數(shù)據(jù)源的訪問,該應(yīng)用中包括兩個(gè)DAO接口:CatalogDao和UserDao,它們相應(yīng)的實(shí)現(xiàn) HibernateCatalogDaoImpl和HibernateUserDAoImpl包含了Hibernate特定的邏輯來實(shí)現(xiàn)數(shù)據(jù)的管理和持久化。

實(shí)現(xiàn)
現(xiàn)在我們來看看如何將上面討論的這些東西包裝在一起以實(shí)現(xiàn)JCatalog,你可以從這個(gè)地址下載源碼:source code

“編程到接口”的思想貫穿了整個(gè)設(shè)計(jì)實(shí)現(xiàn)中,在表示層,共用到四個(gè)backing bean:ProductBean、ProductListBean、UserBean和MessageBean;業(yè)務(wù)邏輯層包含兩個(gè)業(yè)務(wù)服務(wù) (CatalogService和UserService)和三個(gè)業(yè)務(wù)對(duì)象(Product、Category和User);Integration層有兩個(gè)Dao接口和它們相應(yīng)的Hibernate實(shí)現(xiàn),Spring的application context用來管理絕大多數(shù)的業(yè)務(wù)邏輯層和integration層的對(duì)象;ServiceLocator將JSF和業(yè)務(wù)邏輯層整合在了一起。

Wire everything up
由于篇幅所限,我們僅舉例說明,范例中use case CreateProduct展示了如何裝配和構(gòu)建應(yīng)用,在詳細(xì)講述細(xì)節(jié)前,我們利用sequence圖來說明所有層的end-tp-end整合。

【編輯推薦】

  1. JSF和AJAX企業(yè)級(jí)開發(fā)之路(一)
  2. JSF和AJAX企業(yè)級(jí)開發(fā)之路(二)
  3. 在JSF應(yīng)用中捕捉managed-bean構(gòu)造方法
  4. 表現(xiàn)層框架Struts/Tapestry/JSF比較
  5. 簡(jiǎn)單介紹JSF標(biāo)簽
責(zé)任編輯:佚名 來源: JavaEye
相關(guān)推薦

2009-09-23 17:56:45

JSF入門

2009-06-23 16:22:23

JSF能否

2009-06-25 14:05:08

Ajax JSF

2009-06-23 13:01:04

JSF應(yīng)用

2012-06-15 11:32:19

ibmdw

2009-06-26 13:48:57

G4JSFGWTJSF

2009-06-29 13:44:07

Rational ApAjax和JSFWeb

2010-09-15 12:15:23

NessusWEB應(yīng)用安全掃描

2009-06-22 14:22:41

JSF和Tapestr

2009-06-24 17:05:10

2009-06-24 13:50:29

JSF和MVC

2009-02-03 09:41:50

UI組件事件驅(qū)動(dòng)JSF

2010-06-13 09:22:37

jQuery

2010-09-26 16:19:18

2009-09-27 10:37:01

Java應(yīng)用程序Hibernate

2009-06-22 13:44:00

JSFJava Web開發(fā)

2009-06-24 16:42:17

JSF和Facelet

2009-06-23 13:21:26

JSF和Spring

2009-06-24 17:43:24

Struts和JSF

2011-06-30 10:20:38

JSFMVC
點(diǎn)贊
收藏

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