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

Applet和Servlet的使用

開發(fā) 后端
本文介紹Applet和Servlet的使用,Applet和Servlet交換信息的最簡(jiǎn)單地方法就是通過HTTP文字流。

Applet的安全約束

Applet代碼來自于web主機(jī)并在最終用戶的機(jī)器的瀏覽器中運(yùn)行。有害的含有病毒的 Applet可能會(huì)造成破壞性的效果,為了防止這樣的Applet,Applet受到安全方面的約束,那就是Applet只可以與提供這個(gè)Applet的主機(jī)進(jìn)行通信,而且Applet不能操作最終用戶的機(jī)器。它們不能讀寫該用戶的文件系統(tǒng),不能執(zhí)行上面的程序,也不能檢查一些敏感的環(huán)境參數(shù)。(事實(shí)上,我們有一種方法可以回避這種限制,那就是開發(fā)者可以利用數(shù)字簽名的技術(shù)對(duì)Applet進(jìn)行標(biāo)志,這將會(huì)詢問用戶是否可以給予Applet某種特殊的待遇。但是這已經(jīng)超出我們這篇文章中所討論的范圍了。)此外,Applet不能建立或接受外來的socket連接。所謂外來的是指這個(gè)連接超出了提供這個(gè) Applet類文件的主機(jī)(不是提供引用這個(gè)Applet的HTML所在的主機(jī))。

因?yàn)檫@個(gè)安全性的限制,我們與Applet的通信必須采用一種特殊的策略。通信的唯一的途徑就是在提供Applet的主機(jī)和提供相應(yīng)的HTML的主機(jī)之前的網(wǎng)絡(luò)連接。

Servlets

Java Servlet是服務(wù)器端的組件,它和CGI有很多相似。它可以處理web請(qǐng)求,并返回?cái)?shù)據(jù)或HTML。Servlet可以訪問數(shù)據(jù)庫(kù),進(jìn)行計(jì)算,并和Enterprise JavaBean這樣的組件進(jìn)行通信。與CGI程序不同的是,Servlet是持久有效的,也就是說,它只要被示例一次就可以不斷地處理請(qǐng)求(這些請(qǐng)求很可能是同時(shí)發(fā)生的)。因此,Servlet比CGI來得更高效。

Servlet運(yùn)行在一個(gè)Servlet引擎中,通常是在一個(gè)web服務(wù)器或應(yīng)用程序服務(wù)器上。Netscape Enterprise Server 4.0和Netscape Application Server都支持***版本的Java Servlet規(guī)范。和Applet不同,Servlet不受安全約束的限制。因?yàn)镾ervlet是完全在服務(wù)器上運(yùn)行的,它具有所有操作系統(tǒng)所允許的性能。

Servlet可以用來很方便地建立在Applet和Web瀏覽器這樣的客戶端和企業(yè)應(yīng)用程序的核心之間的連接。對(duì)于客戶端來說,向Servlet發(fā)出的請(qǐng)求與其他web請(qǐng)求并沒有任何不同??蛻舳送ㄟ^一個(gè)URL來接受返回的信息,正如我們看到的那樣,返回的信息并不一定只能是HTML,實(shí)際上我們可以通過HTML協(xié)議發(fā)送和接受任何類型的數(shù)據(jù)。

構(gòu)造方法

一個(gè)企業(yè)級(jí)的應(yīng)用程序可以有幾種方法來構(gòu)造Applet和Servlet的使用。我將向大家介紹三種不同的構(gòu)造方法,并對(duì)它們的優(yōu)缺點(diǎn)進(jìn)行比較。

***種方法實(shí)際上只使用了Applet而沒有使用Servlet,盡管Applet受到它們的安全模式的限制,但是Applet還是可以使用象JDBC、RMI這樣的協(xié)議來訪問象數(shù)據(jù)庫(kù)、LDAP目錄和Enterprise JavaBeans組件這樣的后端信息。這種構(gòu)造方法如圖1所示。這種方法雖然看上去很簡(jiǎn)單,但是這并不是一個(gè)好的方法,它會(huì)帶來很多的問題。首先,這種安排要求你將所有的訪問信息直接嵌入到你的Applet代碼中。數(shù)據(jù)庫(kù)用戶名、口令、服務(wù)器標(biāo)識(shí),所有的這一切都必須包含在你的Applet代碼中,這樣最終用戶就有可能從類文件中搜集到這些信息。此外,數(shù)據(jù)庫(kù)或任何其他你訪問的系統(tǒng)都必須在提供Applet的同一臺(tái)服務(wù)器上。這意味著你的服務(wù)器將不得不承擔(dān)雙重的負(fù)擔(dān),它既是一個(gè)web服務(wù)器,也是一個(gè)數(shù)據(jù)庫(kù)服務(wù)器。典型的情況是,你的后端資源可能受到防火墻的保護(hù),但是在這種情況下,這是不可能的,因?yàn)檫\(yùn)行在客戶端上的Applet必須直接訪問你的機(jī)器。***,使用這種方法,你想使用web服務(wù)器群集,如果不是不可能的,至少也是很困難的。

一個(gè)雙層結(jié)構(gòu)的應(yīng)用程序構(gòu)造

一個(gè)雙層結(jié)構(gòu)的應(yīng)用程序構(gòu)造

好一點(diǎn)的方法是將與后端資源通信的事務(wù)封裝到Servlet中,而Applet僅僅用來處理前端的工作。在這種構(gòu)造方法中,正如我們?cè)趫D2中所示的那樣,Servlet克服了Applet固有的安全約束,并用來控制Applet訪問企業(yè)信息系統(tǒng)和事務(wù)邏輯。當(dāng)Servlet接受到一個(gè)請(qǐng)求時(shí),它會(huì)在后端數(shù)據(jù)庫(kù)中查詢信息、執(zhí)行計(jì)算、處理對(duì)代表Applet的信息的獲取并作用于來自Applet的信息。這種方法的一大進(jìn)步是Applet和Servlet對(duì)可以分布在一個(gè)后端web服務(wù)器的群集上,所有與某一共享的數(shù)據(jù)庫(kù)的通信都存在于后端。此外,使用Servlet的設(shè)計(jì)有助于設(shè)計(jì)的模塊化、抽象應(yīng)用程序的后端處理商業(yè)邏輯并提高設(shè)計(jì)的靈活性。

一個(gè)三層結(jié)構(gòu)的應(yīng)用程序構(gòu)造

一個(gè)三層結(jié)構(gòu)的應(yīng)用程序構(gòu)造

如果你是圍繞Enterprise JavaBeans構(gòu)建你的應(yīng)用程序,Servlet就成了中間件。EJB組件可以更加有助于將商業(yè)邏輯從Servlet中分離出來,并將其更加抽象。在這種情況下,一個(gè)Applet和Servlet通信,Servlet再與EJB組件通信。就象我們?cè)趫D3中所示的那樣。在應(yīng)用程序構(gòu)建中引入由EJB組件、Servlet和前端的applet/HTML這樣的層次結(jié)構(gòu),可以給我們提供***限度的彈性和性能。盡管這樣做你必須附出復(fù)雜化和費(fèi)用的代價(jià)。

一個(gè)多層結(jié)構(gòu)的應(yīng)用程序構(gòu)造

一個(gè)多層結(jié)構(gòu)的應(yīng)用程序構(gòu)造


通信策略

如果你使用了這樣的構(gòu)造:在前端使用Applet,在后端使用Servlet,那么你將需要執(zhí)行Applet和Servlet的通信。因?yàn)锳pplet受瀏覽器的安全模式的限制,我們?cè)趯?duì)一個(gè)Applet存取數(shù)據(jù)和信息時(shí)并沒有太多的選擇。正如我們?cè)谇懊嫣岬降模覀儾荒茏x取客戶端的文件系統(tǒng)、不能運(yùn)行客戶端的程序,由于Applet不是在服務(wù)器上運(yùn)行的,我們也不能訪問服務(wù)器上的文件系統(tǒng)。我們只能建立到運(yùn)行在我們的主機(jī)上的服務(wù)的網(wǎng)絡(luò)連接。另外,不要忘記應(yīng)用程序是在一個(gè)公開的Internet上發(fā)布的,防火墻可能會(huì)限制通過HTTP到Servlet或其它web-server模塊的會(huì)話。事實(shí)上,因?yàn)锳pplet本身就是在網(wǎng)絡(luò)上通過HTTP發(fā)布的,所以我們必須準(zhǔn)確把握通信的策略。

假定在客戶端的Applet和服務(wù)器端的Servlet之間的網(wǎng)絡(luò)連接是我們可以使用的唯一的通信路徑,我們可以有幾種方法交換信息。正如你知道的,文字流可以由服務(wù)器通過HTTP發(fā)放。但是你可能不知道Java對(duì)象出可以用這種方式發(fā)放。我們將詳細(xì)地介紹HTTP文字流和HTTP 對(duì)象流的使用。另外,我們將簡(jiǎn)單地介紹通過Socket進(jìn)行通信的方法,當(dāng)一個(gè)應(yīng)用程序枰??虻摹⒊中?牧?郵保?飧齜椒ɑ崽乇鷯杏謾?br>HTTP文字流

Applet和Servlet交換信息的最簡(jiǎn)單地方法就是通過HTTP文字流。Java的URL和URLConnection類型使得從一個(gè)URL讀取數(shù)據(jù)變得很容易,你可以不用擔(dān)心 Socket和其它有關(guān)網(wǎng)絡(luò)工作的通常的復(fù)雜問題。我們所需要的只是一個(gè)服務(wù)器端的組件,這個(gè)組件應(yīng)該可以通過URL發(fā)放信息。這就是我們?cè)谶@兒使用Servlet的原因。

【編輯推薦】

  1. Servlet 2.5版本終止響應(yīng)
  2. 創(chuàng)建Servlet過濾器的向?qū)?/FONT>
  3. 淺談user cache Servlet
  4. 過濾器解壓縮Servlet和JSP頁面內(nèi)容
  5. Servlet的Context與Config
責(zé)任編輯:佚名 來源: IT專家網(wǎng)
相關(guān)推薦

2009-07-08 18:16:02

Applet和Serv

2009-07-09 16:57:03

Servlet與App

2009-07-07 17:23:08

Java Servle

2009-07-03 12:48:24

Java Servle

2009-07-07 16:05:15

Servlet和Jav

2009-06-23 13:47:02

JavaFxApplet示例

2009-07-08 09:35:53

Java ServleServlet 3.0

2012-01-17 13:53:16

JavaSwing

2009-07-06 15:34:56

JSP和Servlet

2012-03-28 13:11:35

JavaEclipse

2009-07-08 09:22:03

Servlet和JSP

2009-07-09 09:54:07

Servlet和CGI

2009-07-10 18:10:18

Jython編寫SerJython

2009-07-06 18:16:00

Servlet程序Cookie

2009-07-07 13:29:33

Servlet和JSP

2010-09-17 10:16:26

Java Applet

2011-07-04 16:04:20

Applet

2009-06-11 08:59:35

2009-07-09 10:49:56

Servlet和JSP

2009-07-01 14:09:24

Servlet和BeaJSP
點(diǎn)贊
收藏

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