在今天的多層結構的web應用程序的設計中,我們可以同時使用java applet和Servlet。Applet為建立功能強大的動態界面提供了便利的機制,Servlet為web服務器或者其他應用服務器處理請求提供了高效率的手段。
Sun公司的應用程序模型描述了在Java2平臺下開發企業級的Java應用的最好的規范。一種被推薦的規范是:在前端使用Applet、Html和jsp,在后端使用EnterPRise JavaBeans支持的Servlet及其他成分。
這種體系結構的要害是在客戶端的Applet和在服務器說?ervlet之間的通信。但是由于Applet受瀏覽器安全模式的限制,在一個Applet中存取數據和信息并不想看上去的那么簡單。在這篇文章中,我們將解釋在Applet-Servlet結構中開發者所面對的限制,并探討幾個不同的可以在Applet和Servlet之間轉輸數據的通信策略。
假如你已經熟悉Applet和Servlet,這肯定會對你閱讀本文有幫助,假如你還不是那么熟悉,那也沒關系,我們會簡要地介紹它們。
APPLET和SERVLET的簡介
Applet Java applets實際上是運行在web頁面上的Java程序。它是一個繼續于java.applet.applet的Java類,它通過引用被嵌入到HTML頁面中去,就象一個圖像一樣。Applet和HTML的組合,可以建立功能更為強大的動態界面。
對于一些只用來滾動正文和播放動畫的Applet,我們可以在一個企業級的應用程序中利用它來顯示和處理來自服務器上的資源的數據。例如,一個Applet可以用來瀏覽和修改數據庫中的記錄或者控制運行在服務器上的其他應用程序。
Java applet除了可以使用它自己定義的類文件外,還可以使用其他的類,不管這些類是獨立存在的還是被打包成了一個JAR文件。Applet和它的類文件通過標準的HTTP請求進行分布,所以Applet可以越過web頁面數據所在的平臺的防火墻進行發送。
除非是涉及到保持應用程序完整性的問題,Applet總會在每次用戶重新訪問web主機時自動刷新并會在客戶端保留一段時間。
我們得感謝Java操作系統的平臺無關性,這才使得Applet可以運行在任何擁有Java虛擬機(JVM)的瀏覽器上。Sun公司的Java插件甚至可以使用可以利用最新版本的JVM編制頁面,而不用擔心受你的用戶的瀏覽器上的JVM的版本的限制。
因為Applet是Java平臺的擴展,所以在你建立用Applet建立你的web應用程序的界面時,你可以重用已存在的Java組件。
正如我們在下面的例子中可以看到的那樣,你可以在你的Applet的組件中使用復雜的Java對象來開發本來由服務器端應用程序完成的工作。事實上,你可以編寫這樣的Java代碼,它既可以在Applet上執行,也可以在應用程序內執行。
Applet具有所有傳統的Java應用程序的功能,包括使用Sun公司的JFC/Swing組件。Applets也可以用來制作圖形以及應用程序中的用戶界面(盡管有些輔助的窗口會被標志為“Warning, Java Applet Window”)。
但是不管他們有多么相似,在應用程序和Applet之間還是一些要害性的差別的。例如,我們不得不考慮到我們的Applet是受到安全模式的限制的。
Applet的安全約束
Applet代碼來自于web主機并在最終用戶的機器的瀏覽器中運行。有害的含有病毒的Applet可能會造成破壞性的效果,為了防止這樣的Applet,Applet受到安全方面的約束,那就是Applet只可以與提供這個Applet的主機進行通信,而且Applet不能操作最終用戶的機器。
它們不能讀寫該用戶的文件系統,不能執行上面的程序,也不能檢查一些敏感的環境參數。(事實上,我們有一種方法可以回避這種限制,那就是開發者可以利用數字簽名的技術對Applet進行標志,這將會詢問用戶是否可以給予Applet某種非凡的待遇。
但是這已經超出我們這篇文章中所討論的范圍了。)此外,Applet不能建立或接受外來的socket連接。所謂外來的是指這個連接超出了提供這個Applet類文件的主機(不是提供引用這個Applet的HTML所在的主機)。
因為這個安全性的限制,我們與Applet的通信必須采用一種非凡的策略。通信的唯一的途徑就是在提供Applet的主機和提供相應的HTML的主機之前的網絡連接。
Servlets Java servlet是服務器端的組件,它和CGI有很多相似。它可以處理web請求,并返回數據或HTML。Servlet可以訪問數據庫,進行計算,并和Enterprise JavaBean這樣的組件進行通信。
與CGI程序不同的是,Servlet是持久有效的,也就是說,它只要被示例一次就可以不斷地處理請求(這些請求很可能是同時發生的)。因此,Servlet比CGI來得更高效。
Servlet運行在一個Servlet引擎中,通常是在一個web服務器或應用程序服務器上。Netscape Enterprise Server 4.0和Netscape application Server都支持最新版本的Java servlet規范。
和Applet不同,Servlet不受安全約束的限制。因為Servlet是完全在服務器上運行的,它具有所有操作系統所答應的性能。
Servlet可以用來很方便地建立在Applet和Web瀏覽器這樣的客戶端和企業應用程序的核心之間的連接。對于客戶端來說,向Servlet發出的請求與其他web請求并沒有任何不同??蛻舳送ㄟ^一個URL來接受返回的信息,正如我們看到的那樣,返回的信息并不一定只能是HTML,實際上我們可以通過HTML協議發送和接受任何類型的數據。
新聞熱點
疑難解答