標籤:管理員 logic end 最佳化 連接埠 auto 服務 run 發展
什麼是J2EE
一、準備篇
1 什麼是J2EE?它和普通的Java有什麼不同?
答:J2EE全稱為Java2 Platform Enterprise Edition。
“J2EE平台本質上是一個分布式的伺服器應用程式設計環境——一個Java環境,它提供了:
(1)宿主應用的一個運行基礎架構環境。
(2)一套用來建立應用的Java擴充API。”(引自《J2EE伺服器端進階編程》)
2 J2EE好學嗎?
答:J2EE是很多技術的集合體,並且還在成長中。
你會遇到很多專有名詞:比如(X)HTML,Servlet/JSP,JDBC,JMS,JNDI,EJB,XML,Web Service……。
尤其是XML和Web Service正在快速成長。幸運的是,你不需要等到學會所有技術後再開始編程。
大體上J2EE可以分成3個主要應用:Servlet/JSP,EJB,XML/Web Service 和一些支撐技術例如JDBC和JNDI。
你可以一個一個的學。
二、什麼是J2EE,為什麼需要J2EE
3 J2EE有什麼用?
答:J2EE用來建設大型的分布式企業級應用程式。或者用更時髦的名詞說就是“電子商務”應用程式。
這些企業可能大到擁有中樞資料庫伺服器,Web伺服器叢集和遍布全國的辦公終端,也可能小到只不過想做一個網站。
4 學J2EE有前途嗎?
答:在這一市場目前只有一種技術可以和J2EE競爭,那就是Microsoft的.NET。
相對來說.NET要“新”一些而J2EE要“老”一些。
但是.NET只能用於Windows平台(Microsoft聲稱要開發C#在Linux上的虛擬機器但是尚未兌現該諾言),
考慮到Linux的發展勢頭,你可以相信.NET不會一統天下。
5 據說J2EE的效能不如.NET好,是真的嗎?
答:在Sun公司提供的範例程式Pet Store上,Microsoft聲稱不如相同的.NET程式好。
而Sun公司反駁說這一程式不能真正體現J2EE的效能,並且指責Microsoft在資料庫上做了最佳化。
作者沒有學習過.NET因而不能妄下斷言。
無論如何,大型分布式程式中的效能瓶頸通常首先來自於錯誤的設計。
6 聽你說了這麼多,我想學著玩玩J2EE。
答:除非你想靠它當飯吃或者作為技術儲備,否則請不要浪費你的時間。
Flash要好玩得多。電腦遊戲就更加好玩了。
7 學習J2EE該怎麼開始?
答:首先,下載一個J2EE伺服器。其次,去java.sun.com下載J2EE的API。第三,找一本好的參考書。最後,找一個順手的IDE。
J2EE伺服器。你可以用Sun的J2EE SDK(免費),或者Weblogic(效能最好,但是太大,而且作者不推薦盜版行為),或者Jboss(免費,就是文檔太少),或者Jrun(開發版免費,作者用這個)。參考書作者感覺Wrox的《J2EE伺服器端進階編程》不錯,但是太老(作者手頭的是2001年中文版)。你還需要去下載一些最新的技術資料(當然肯定是英文的)。
IDE如果你的機器配置夠好(記憶體至少512M以上,256M或以下請勿考慮),可以用IBM的WSAD,不然就繼續用Eclipse或者其他。
你也可以經常去水木清華的Java版逛逛,但是在發貼前先看看精華區裡有沒有你要的答案。
8 我下了一個J2EE伺服器但是不會配置。
答:請認真閱讀隨機指導文檔,不同的伺服器的配置都不一樣,作者愛莫能助。
9 我發現你沒有提到Tomcat。
答:Tomcat只是一個Web伺服器,更準確地說主要只是一個Web Container。
如果你想要學習EJB的話,Tomcat無法滿足你的需要。
三、 Servlet/JSP篇
10 什麼是Servlet?
答:一個Servlet是一個Java類。它處理Http(s)請求並作出響應,包括返回一個HTML頁面或轉交給其他URL處理。
Servlet必須運行在一個Web Container例如Tomcat中。
Servlet必須是javax.servlet.http.HttpServlet的子類,
你可以繼承doGet()或者doPost()方法,兩者分別對應於Http(s)中的Get請求和Post請求。
11 我怎麼獲得Http請求裡的參數?
答:HttpRequest的getParameter()方法。例如:String paramValue = request.getParameter("paramName");
12 我怎麼返回結果?
答:你可以利用相關API開啟一個輸出資料流,並向流中直接寫入一個HTML頁面。
但是作者完全不贊成這樣做。一方面這樣做會很羅嗦。
另一方面從Model-View-Controller模式(在《J2EE核心模式》中被歸為Front Controller模式)的觀點來看,
你應當提供一些HTML或者JSP作為視圖(view),而Servlet則根據請求參數決定轉到哪一個視圖。
你可以利用response.sendRedirect(…)方法或request.getDispatcher(…).forward()方法來實現。
13 sendRedirect()和forward()有什麼不同?
答:sendRedirect()是向瀏覽器發送一個redirect通知,瀏覽器重新導向到新的URL。
而forward是在伺服器端直接轉到新的URL,對於瀏覽器是透明的。
前者瀏覽器的地址欄顯示的是新的URL,後者瀏覽器的地址欄顯示的是Servlet的URL。
因而當目標URL會自動重新整理時,兩者會造成一些差別。
14 我寫了一個Servlet程式,怎麼運行它?
答:開發J2EE程式有一個部署(deploy)的概念,實際上是開發——部署——啟動並執行三部曲。
大多數伺服器支援Hot deploy。你只需要在相應的Application目錄(具體路徑依賴於伺服器)下面
建立一個符合WAR或EAR格式(參見16,17)的目錄,啟動伺服器,就可以通過瀏覽器訪問了。
特別的,你的Servlet的class檔案應當放在/WEB-INF/classes目錄中。
注意J2EE SDK不支援Hot deploy,你需要通過它的deploy tool來部署。
Tomcat只支援WAR格式。
15 EAR和WAR有什麼不同?
答:EAR是一個完整的J2EE應用程式,包括Web部分和EJB部分。
WAR只是其中的Web部分。
16 EAR格式是怎樣的?
答:一個EAR可以包含任意多個WAR或EJB JAR,並且包含一個META-INF的目錄。
在/META-INF中包含了一個application.xml,其中描述了這個EAR包含哪些模組,以及安全性配置。
細節請看參考書。
17 WAR格式是怎樣的?
答:一個WAR包含一個WEB-INF的目錄,這個目錄下包含classes目錄,lib目錄和web.xml。
/WEB-INF/classes存放按package組織的class檔案,/WEB-INF/lib目錄存放jar檔案,
web.xml描述了很多東西,請讀參考書。
18 我的普通HTML檔案應當放在哪裡?
答:放在除了/WEB-INF以外的其他地方。
19 我訪問不到servlet,甚至連HTML檔案都訪問不到!
答:第一你沒啟動伺服器。第二你敲錯了連接埠。第三你沒有正確配置context-path。
第四你的伺服器不支援auto reload或者你關閉了這一選項,你得重啟伺服器。
第五確認你沒有把HTML放在/WEB-INF目錄下,那是訪問不到的。
20 我能訪問HTML但是訪問不到servlet。
答:請檢查你的web.xml檔案。確保你正確定義了和元素。
前者標識了一個servlet,後者將一個相對於context-path的URL映射到一個servlet。
在Tomcat中你可以通過/context-path/servlet/package/servletname的形式訪問servlet,
但是這隻是Tomcat的便捷訪問方式,並不是正式規範。
細節請看參考書。
21 什麼是JSP?它和Servlet有什麼區別?
答:你可以將JSP當做一個可擴充的HTML來對待。
雖然在本質上JSP檔案會被伺服器自動翻譯為相應的Servlet來執行。
可以說Servlet是面向Java程式員而JSP是面向HTML程式員的,除此之外兩者功能完全等價。
22 我的JSP顯示的漢字是亂碼。
答:在你的JSP開頭加上一行 <%@ page contentType="text/html; charset=gb2312"%>
如果你已經聲明了page我想你知道該怎麼修改。
23 JSP檔案存放在哪裡?
答:除了/WEB-INF下的任何地方。
24 在JSP裡面怎麼引用Java Bean。
答:首先,確認你要引用的類在/WEB-INF/classes下或在/WEB-INF/lib的某個jar內。
其次,在JSP裡加一行
具體解釋請看參考書。
25 我想在servlet間傳遞資料。
答:利用session。在Servlet/JSP中,你可以在4個地方儲存資料。
(1) page,本頁面。
(2) session,用來存放客戶相關的資訊,比如購物車,對應介面為javax.servlet.http.HttpSession。
Session機制實際上是cookie和URL Rewrite的抽象,伺服器會自動使用cookie或URL Rewrite來實現。
(3) request,可以在forward()時傳遞資訊,對應介面為javax.servlet.http.HttpRequest。
(4) application,或稱context,存放全域資訊,對應介面為javax.servlet.ServletContext。
26 怎麼調用cookie?
答:作者建議使用session,你總是會遇到某些禁用cookie的使用者。這時session會自動使用URL重寫來實現。
27 怎麼在JSP裡面實現檔案下載?
答:實際上這是一個HTML的問題。答案是一個超連結。
28 怎麼實現檔案上傳?
答:用戶端是HTML問題,在form中設定method為post,enctype為multi-part/form-data,加一個。
而在接收的servlet中只是一個I/O問題。
29 我想讓頁面自動重新整理,比如聊天室。
答:這是一個HTML問題,在部分中加一條。
這是所謂的Clinet-push,用戶端重新整理技術。
30 我想讓使用者登入以後才能訪問頁面。
答:使用聲明式安全措施。
你只需要在web.xml中定義資訊安全角色(Role),並定義受保護的URL集合只能由特定Role訪問。
大多數伺服器支援基於資料庫的使用者映射,你只要在相應資料庫中建立兩張表並設定管理員就可以了。
注意J2EE SDK不支援基於資料庫的使用者映射。
細節請看參考書和伺服器文檔。
31 我想要能註冊使用者。
答:參看30。在接受註冊請求的Servlet中執行寫入資料庫操作即可。
32 怎麼在JSP中訪問資料庫?
答:標準做法是使用DAO模式,定義一個Java bean來訪問資料庫並在JSP中使用。
然而,當你的資料庫模式很簡單時,你可以使用JSTL中的標籤來快速存取。
33 什麼是JSTL?
答:JSTL是Jsp Standard Tag Library的縮寫。這是一組通用標籤並將成為JSP 2.0的一部分。
其中包含賦值,分支,迴圈,查詢資料庫,更新資料庫
等。目前你需要像添加自訂標籤庫一樣來添加JSTL,但是可以預計JSP 2.0會將JSTL作為組成部分。
標籤庫可以在 http://jakarta.apache.org 下載。注意JSTL需要在支援JSP1.2或更高版本的容器下運行。協助檔案可以閱讀sun的JSTL正式規範。
如何才算掌握Java(J2SE篇)?
Java本身是一種設計的非常簡單,非常精巧的語言,所以Java背後的原理也很簡單,歸結起來就是兩點:
1、JVM的記憶體管理
理解了這一點,所有和對象相關的問題統統都能解決
2、JVM Class Loader
理解了這一點,所有和Java相關的配置問題,包括各種App Server的配置,應用的發布問題統統都能解決
時常看到一些人說掌握了Java,但是讓他們用Java做一個實際的項目可能又困難重重,在這裡,筆者根據自己的一點理解鬥膽提出自己的一些對掌握Java這個說法的標準,當然對於新手,也可以提供一個需要學習哪些內容的參考。另外這個標準僅限於J2SE部分,J2EE部分的內容有時間再另說。
1、文法:必須比較熟悉,在寫代碼的時候IDE的編輯器對某一行報錯應該能夠根據報錯資訊知道是什麼樣的語法錯誤並且知道任何修正。
2、命令:必須熟悉JDK帶的一些常用命令及其常用選項,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果這些命令你沒有全部使用過,那麼你對java實際上還很不瞭解。
3、工具:必須至少熟練使用一種IDE的開發工具,例如Eclipse、Netbeans、Jbuilder、Jdeveloper、IDEA、Jcreator或者Workshop,包括進行工程管理、常用選項的設定、外掛程式的安裝配置以及進行調試。
4、API:Java的核心API是非常龐大的,但是有一些內容筆者認為是必須熟悉的,否則不可能熟練的運用Java,包括:
1)、java.lang包下的80%以上的類的功能的靈活運用。
2)、java.util包下的80%以上的類的靈活運用,特別是集合類體系、規則運算式、zip、以及時間、隨機數、屬性、資源和Timer。
3)、java.io包下的60%以上的類的使用,理解IO體系的基於管道模型的設計思路以及常用IO類的特性和使用場合。
4)、java.math包下的100%的內容。
5)、java.net包下的60%以上的內容,對各個類的功能比較熟悉。
6)、java.text包下的60%以上的內容,特別是各種格式化類。
7)、熟練運用JDBC。
8)、java.security包下40%以上的內容,如果對於安全沒有接觸的話根本就不可能掌握java。
9)、AWT的基本內容,包括各種組件事件、監聽器、布局管理器、常用組件、列印。
10)、Swing的基本內容,和AWT的要求類似。
11)、XML處理,熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理。
5、測試:必須熟悉使用junit編寫測試案例完成代碼的自動化的測試。
6、管理:必須熟悉使用ant完成工程管理的常用任務,例如工程編譯、產生javadoc、產生jar、版本控制、自動化的測試。
7、排錯:應該可以根據異常資訊比較快速的定位問題的原因和一般位置。
8、思想:必須掌握OOP的主要要求,這樣使用Java開發的系統才能是真正的Java系統。
9、規範:編寫的代碼必須符合流行的編碼規範,例如類名首字母大寫,成員和方法名首字母小寫,方法名的第一個單詞一般是動詞,包名全部小寫等,這樣程式的可讀性才比較好。
什麼是J2EE
J2EE: 電子商務和資訊技術的快速發展以及對它們的需求給應用程式開發人員帶來了新的壓力。
必須以比以前更少的金錢、更少的資源來更快地設計、開發公司專屬應用程式程式。為了降低成本,並加快公司專屬應用程式程式的設計和開發, J2EE 平台提供了一個基於組件的方法,來設計、開發、裝配及部署公司專屬應用程式程式。J2EE 平台提供了多層的分布式的應用程式模型、組件再用、一致化的安全模型以及靈活的事務控制。您不僅可以用比以前更快的速度向市場推出創造性的客戶解決方案,而且您的平台獨立的、基於組件的J2EE 解決方案不會被束縛在任何一個廠商的產品和API 上。
1 J2EE 規範定義了以下種類的組件
? 應用客戶組件。
? Enterprise JavaBeans 組件。
? Servlet及JavaServer Pages(JSP 頁面)組件(也被稱作Web 元件)。
? Applet。
一個多層的分布式的應用程式模型意味著應用邏輯被根據功能劃分成組件,並且可以在同一個
伺服器或不同的伺服器上安裝組成J2EE 應用的這些不同的組件。一個應用組件應被安裝在什麼
地方,取決於該應用組件屬於該多層的J2EE 環境中的哪一層。這些層是客戶層、We b層、業務
層及公司資訊系統層( EIS )等。
(1) 客戶層
J2EE 應用可以是基於Web 的,也可以是不基於Web 的。在一個基於Web 的J2EE 應用中,使用者的瀏覽器在客戶層中運行,並從一個We b伺服器下載Web 層中的靜態HTML 頁面或由J S P或Servlet 產生的動態HTML 頁面。在一個不基於Web 的J2EE 應用程式中,一個獨立客戶程式不運行在一個HTML 頁面中,而是運行在其他一些基於網路的系統(比如手持功能或汽車電話)中,Applet 程式,在客戶層中運行,並在不經過Web 層的情況下訪問Enterprise Beans。這個不基於Web 的客戶層可能也包括一個JavaBeans 類來系統管理使用者輸入,並將該輸入發送到在企業層中啟動並執行Enterprise Beans類來進行處理。根據J2EE 規範,JavaBeans 類不被視為組件。為J2EE 平台編寫的JavaBeans 類有執行個體變數和用於訪問執行個體變數中的資料的“ get 和set 方法”。以這種方式使用的JavaBeans 類在設計和實現上通常都是簡單的,但是它們必須符合JavaBeans 規範中列出的命名和設計約定。
(2) Web 層
J2EE Web 元件可以由JSP 頁面、基於Web 的A p p l e t以及顯示HTML 頁面的S e r v l e t組成。調用S e r v l e t或者JSP 頁面的HTML 頁面在應用程式組裝時與Web 元件打包在一起。就像客戶層一樣,Web 層可能包括一個JavaBeans 類來系統管理使用者輸入,並將輸入發送到在業務層中啟動並執行Enterprise Beans 類來進行處理。運行在客戶層的Web 元件依賴容器來支援諸如客戶請求和響應及Enterprise Bean 查詢等。
(3) 業務層
作為解決或滿足某個特定業務領域(比如銀行、零售或金融業)需要的邏輯的業務代碼由運行在業務層的Enterprise Beans 來執行。一個Enterprise Bean 從客戶程式處接收資料,對資料進行處理(如果需要),再將資料發送到公司資訊系統層儲存起來。一個Enterprise Beans 還從儲存中檢索資料,並將資料送回客戶程式。運行在業務層的Enterprise Beans 依賴於容器來為諸如事務、生命期、狀態管理、多線程及資源儲存池等提供通常都非常複雜的系統級代碼。業務層經常被稱作Enterprise JavaBeans (EJB )層。業務層和Web 層一起構成了3 層J 2 E E應用的中介層,而其他兩層是客戶層和公司資訊系統層。
(4) 公司資訊系統層
公司資訊系統層運行公司資訊系統軟體,這層包括企業基礎設施系統,例如企業資源計劃(E R P)、大型主機交易處理( mainframe transactionprocessing )、資料庫系統及其他遺留資訊系統(legacy informationsystems )。J2EE 應用組件因為某種原因( 例如訪問資料庫) 可能需要訪問公司資訊系統。J2EE 平台的未來版本將支援Connector 架構,該架構是將J2EE 平台串連到公司資訊系統上的一個標準A P I。
(5) 查詢服務
因為一個J2EE 應用程式的組件是單獨啟動並執行,並且往往在不同的裝置上運行,因此,需要一種能讓客戶層和Web 層代碼查詢並引用其他代碼和資源的方法。客戶層和Web 層代碼使用Java 命名和目錄介面(JNDI )來查詢使用者定義物件(例如Enterprise Beans )、環境條目(例如一個資料庫磁碟機的位置)、公司資訊系統層中用於尋找資源的JDBC DataSource對象,以及訊息串連。
(6) 安全和交易管理
諸如安全和交易管理這樣的應用行為可以在部署時在Web 和Enterprise Beans 組件上進行配置。這個特徵將應用邏輯從可能隨裝配而變化的配置設定中分開了。J2EE 安全模型允許配置一個Web 或Enterprise Beans 組件,使系統資源只能由授權的使用者訪問。例如,一個Web 元件可以被配置成提示輸入使用者名稱和密碼。一個Enterprise Beans 組件可以被配置成只讓特定團體中的成員調用其某些方法。或者,一個Servlet 組件可以被配置成讓某個組織中的所有人都能訪問其某些方法,同時只讓該組織中的某些享有特權的人訪問其中一些方法。同樣是該Servlet 組件,可以針對另外一個環境而被配置成讓每個人都能訪問其所有方法,或者僅讓選定的少數人訪問其所有方法。
J2EE 事務模型使得能夠在部署時定義構成一個單一事務的方法之間的關係,以使一個事務中的所有方法被處理成一個單一的單元。這是我們所希望的,因為一個事務是一系列步驟,這些步驟要麼全部完成,要麼全部取消。例如,一個Enterprise Beans 可能有一組方法,使我們可以通過從第一個賬戶借出並存入第二個賬戶的方式而將錢從第一個賬戶轉移到第二個賬戶。我們希望全部的操作被作為一個單元對待,這樣,如果在借出之後存入之前發生了故障,該借出操作被取消。事務屬性是在裝配期間定義在一個組件上的。這使得能將來自多個應用組件的方法歸到一個事務中,這說明,我們可以輕易變更一個J2EE 應用程式中的應用組件,並重新指定事務屬性,而不必改變代碼或重新編譯。在設計應用組件時,要記住,儘管Enterprise Beans 有一個可使應用組件的容器自動啟動多步事務的機制,但是Applet 和應用的客戶容器可能並不支援這一點。然而, Applet 和應用客戶容器總是能夠調用支援這一點的一個Enterprise Beans。還應當注意, JSP 頁面和Servlet 沒有被設計成是事務的,它們通常應當將事務工作交給一個Enterprise Bean 來完成。然而,如果事務工作在一個JSP 頁面或Servlet 中是必須的,那麼此種工作也應當是非常有限的。
(7) 可重用應用組件
J2EE 組件(Applet 、應用的客戶、Enterprise Beans 、JSP 頁面及Servlet )都被打包成模組,並以Java Archive (JAR )檔案的形式交付。一個模組由相關的組件、相關的檔案及描述如何配置組件的配置描述檔案組成。例如,在組裝過程中,一個HTML 頁面和Servlet 被打包進一個模組之中,該模組包含H T M L檔案、Servlet 組件及相關的配置描述檔案,並以一個Web Archive(WAR )檔案的形式交付,該WAR 檔案是一個帶.war 副檔名的標準JAR 檔案。模組的使用使得利用相同組件中的某些組件來組裝不同的J2EE 應用程式成為可能。例如,一個J2EE 應用程式的Web 版可能有一個Enterprise Beans 組件,還有一個JSP 頁面組件。該Enterprise Beans 組件可以與一個應用客戶組件結合,以產生該應用程式的非Web 版本。這不需要進行額外的編碼,只是一個裝配和部署的問題。並且,可重用組件使得將應用開發和部署過程劃分成由不同的角色來完成成為可能,這樣,不同的人或者公司就能完成封裝和部署過程的不同部分。
- J2EE 平台定義了如下角色:
(1) J2EE 產品供應商
設計並使J2EE 平台、API 和在J2EE 規範中定義的其他特徵能被其他公司或人購得的公司。
(2) 應用組件供應商
建立用於J2EE 應用程式的Web 元件、Enterprise Beans 組件、Applet 或應用客戶程式的公司或個人。在裝配過程中,應用組件檔案、介面及類被打包進一個JAR 檔案中。
(3) 應用程式裝配商
從組件供應商獲得應用組件JAR 檔案,並將它們組裝成一個J2EE 應用的Enterprise Archive(E A R)檔案的公司或個人,這種檔案是一個帶. E a r副檔名的標準檔案。應用裝配商提供與該應用程式相關的整體資訊,並使用驗證工具來檢驗EAR 檔案的內容是正確的。組裝和部署資訊儲存在一個基於文本的配置描述檔案中,此種檔案使用XML 標記來標記該文本。應用裝配商可以使用一個能通過互動式選擇來正確添加XML 標記的裝配和組態工具來編輯該配置描述檔案。
(4) 部署商
部署( d e p l e y)J2EE 應用程式的公司或個人。其職責包括設定事務控制、安全屬性,並根據應用組件供應商提供的指示來標明一個Enterprise Bean 是自己處理自身的儲存,還是由一個容器來處理等。部署涉及配置和安裝。在配置過程中,部署商遵循應用組件供應商提供的指示來解決外部依賴問題,定義安全設定,以及分配事務屬性。在安裝過程中,部署商將應用組件安裝到伺服器上,並產生容器特定的類和介面。
(5) 系統管理員
配置並管理運行J2EE 應用程式的計算環境和網路基礎設施,並監督運行環境的人員。
(6) 工具供應商
生產被組件供應商、裝配商及部署商使用的用於進行開發、組裝和打包的工具的公司或個人。
(7) 設計使用者介面和引擎
在為J2EE 應用程式設計使用者介面和後端引擎時,需要決定讓該程式是基於We b,還是不基於We b。在做出這個決定時,我們可能希望考慮平台配置、下載速度、安全、網路流量和網路服務。
例如,包含有使用者介面並且經常被大量使用者訪問的一個Applet 可能需要花很長的時間才能被下載下來,這讓使用者沮喪。然而,如果知道該A p p l e t要運行在一個公司的內部網內的受控環境中,那麼,在這種情況下,該Applet 將擁有一個完全可接受的下載速度。另一個考慮是,繁重的處理應當在哪裡執行。例如,如果客戶程式在一個蜂窩電話或呼機中執行,伺服器應當完成盡量多的計算和資料處理,而客戶程式只應顯示結果就可以了。然而,設計在一個強大的台式機平台上啟動並執行大型財務分析系統則應當在客戶機上完成其複雜計算。應用的客戶程式和A p p l e t使用者介面通常都是用Swing API 建立的,該API 可從標準版J a v a 2平台中獲得。Swing API 提供了一整套GUI 組件(表格、樹形結構、按鈕等),這些組件可以被用來實現一種比用一個典型的HTML 頁面所能實現的更為互動的體驗。Swing 也支援HTML 文本組件,這個組件可以被用來顯示來自一個伺服器的響應。客戶程式可以直接存取Enterprise Beans 層或公司資訊系統層。但應謹慎實現這種程式。
繞過EJB 層的程式可以使用JDBC API 來訪問一個關係型資料庫,但應被限制於對資料庫表格進行維護等管理工作上。
參考:原文連結
什麼是J2EE