1. 程式人生 > >Applet、Scriptlet與Servlet

Applet、Scriptlet與Servlet

規模 stop ros 有著 解釋執行 抽象類 選擇 con 用戶輸入

Applet、Scriptlet與Servlet - 青春念邵的博客 - 博客頻道 - CSDN.NET
http://blog.csdn.net/mo_fan_qing_wa/article/details/50016575

小應用程序Applet

Applet簡介

Applet是一種特殊的java程序,它本身不能單獨運行(因為本身沒有main()),需要嵌入在一個HTML文件中,借助瀏覽器或者appletviewer來解釋執行。Applet不能直接用java命令運行,需要先編譯成字節碼文件

當用戶訪問這樣的網頁時,Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網絡瀏覽器。由於Applet是在用戶的計算機上執行的,所以它的執行速度不受網絡帶寬或者Modem存取速度的限制,用戶可以更好地欣賞網頁上Applet產生的多媒體效果。

Applet 小應用程序的實現主要依靠java.applet 包中的Applet類。與一般的應用程序不同,Applet應用程序必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得參數,並和Web頁面進行交互。

含有Applet的網頁的HTML文件代碼中必須帶有<applet>和</applet>這樣一對標記,當支持Java的網絡瀏覽器遇到這對標記時,就將下載相應的小程序代碼並在本地計算機上執行該Applet小程序。

Applet的執行的流程

1.建立applet文件。比如文件命名為Shao.java

2.進入doc。(假設Shao.java存放在E盤的applet\src中) 開始->運行->cmd-> e:->cd applet\src->javac Shao.java

javac.exe會把Shao.java文件編譯成字節碼文件。

3.此時 E:\applet\src中新生成了Shao.class文件。然後在E:\applet\src中建立1.html文件。

其中1.html文件中的代碼為:

<applet code=Shao.class height=300width=300></applet>

4. 在cmd中輸入appletviewer 1.html便可以看見你的applet了或直接把這個1.html拖入瀏覽器運行

Applet的演化

java早年在Web領域唯一的賣點就是Applet,有一段時間非常流行Applet做的動畫、聊天室和遊戲,那時的瀏覽器包括IE、Netscape都是包含JVM的。sun原來是和微軟推applet的,後來因為一些原因,sun公司與微軟鬧翻了,IE中也就不再內嵌JVM了,而是把applet下降到插件級別,從此以後sun再也沒把心思放到桌面設計,更多因素考慮企業設計,jre也越做越大,桌面用戶也越來月不願意裝這個插件了(例如需要:裝jre,下載applet本身的類,運行所需的其它類也得下載,這個下載過程越來越慢直接導致Applet失去了用戶群)(後來微軟以那個虛擬機技術為基礎,搞了J++,後來J++不行,就從borland挖來Anders Hejlsberg,直接導致微軟C#的誕生和delphi的沒落)。正好此時,flash出現了。

你點一個網頁提示你要安裝個幾M的ActiveX控件,可以接受flash和java applet各由一家公司控制,雖然他基本支持所有的瀏覽器,但畢竟還要安裝一套運行庫。在AJAX技術提出之後,javascript制作APP的能力被重新發現,不需要另外安裝一套運行庫就能運行良好就是最大的好處。 (特別是一些前端框架的興起如:Jquery,Extjs等)很快的Flash被淘汰了

運行applet 需要安裝java環境,這個對用戶來說成本很高。不過flash也需要插件,但是由於flash的推廣很成功,基本上有瀏覽器的都裝了flash插件。html5則完全不用插件,瀏覽器支持!

在因特網上,ActiveX插件軟件的特點是:一般軟件需要用戶單獨下載然後執行安裝,而ActiveX插件是當用戶瀏覽到特定的網頁時,IE瀏覽器即可自動下載並提示用戶安裝。 ActiveX插件安裝的一個前提是必須經過用戶的同意及確認

Applet運行狀態控制的基本方法

Applet類中的四種基本方法用來控制其運行狀態:init()、start()、stop()、destroy()
init()方法

這個方法主要是為Applet的正常運行做一些初始化工作。當一個Applet被系統調用時,系統首先調用的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞參數,添加用戶界面的基本組件等操作。
start()方法

系統在調用完init()方法之後,將自動調用start()方法。而且,每當用戶離開包含該Applet的主頁後又再返回時,系統又會再執行一遍 start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的代碼放在init()方法中。可 以在start()方法中開始一個線程,如繼續一個動畫、聲音等。
stop()方法

這個方法在用戶離開Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在用戶並不註意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運行速度,且並不需要人為地去調用該方法。如果Applet中不包含動畫、聲音等程序,通常也不必實現該方法。

destroy()方法

與對象的finalize()方法不同,Java在瀏覽器關閉的時候才調用該方法。Applet是嵌在HTML文件中的,所以destroty()方法不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回占用的非內存獨立資源。(如果在 Applet仍在運行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。

小腳本程序(Scriptlet = Script + Applet)

  Live Connect提供了Java與javascript的接口,可以允許在Java Applet小程序中使用javascript。具體步驟如下:
  1) 在HTML腳本中使用〈APPLET〉標誌的MAYSCRIPT屬性,以允許Java Applet小程序訪問腳本;
  2) 將netscape. javascript包導入Java Applet小程序;
  3) 在Java Applet小程序中用JSObject類的getWindow( )方法創建javascript窗口的句柄;
  4) 在Java Applet小程序中用JSObject類的getMember( )方法訪問javascript對象;
  5) 在Java Applet小程序中用JSObject類的eval( )方法調用javascript方法。《這個不詳細解釋》

小服務程序(Servlet = Server + Applet)

Servlet是一種服務器端的Java應用程序,具有獨立於平臺和協議的特性,可以生成動態的Web頁面。它擔當客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。 Servlet是位於Web 服務器內部的服務器端的Java應用程序,與傳統的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。

servlet是在服務器上運行的小程序。這個詞是在Java applet的環境中創造的,Java applet是一種當作單獨文件跟網頁一起發送的小程序,它通常用於在服務器端運行,結果得到為用戶進行運算或者根據用戶互作用定位圖形等服務。

服務器上需要一些程序,常常是根據用戶輸入訪問數據庫的程序。這些通常是使用公共網關接口(CGI(Common GatewayInterface))應用程序完成的。然而,在服務器上運行Java,這種程序可使用Java編程語言實現。在通信量大的服務器上,Javaservlet的優點在於它們的執行速度更快於CGI程序。各個用戶請求被激活成單個程序中的一個線程,而無需創建單獨的進程,這意味著服務器端處理請求的系統開銷將明顯降低。

Servlet的主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。這個過程為:

客戶端發送請求至服務器端;

服務器將請求信息發送至Servlet,Servlet生成響應內容並將其傳給服務器。響應內容動態生成,通常取決於客戶端的請求服務器將響應返回給客戶端

Servlet看起來像是通常的Java程序。Servlet導入特定的屬於Java ServletAPI的包。因為是對象字節碼,可動態地從網絡加載,可以說Servlet對Server就如同Applet對Client一樣,但是,由於Servlet運行於Server中,它們並不需要一個圖形用戶界面。從這個角度講,Servlet也被稱為FacelessObject。

一個servlet就是Java編程語言中的一個類,它被用來擴展服務器的性能,服務器上駐留著可以通過“請求-響應”編程模型來訪問的應用程序。雖然servlet可以對任何類型的請求產生響應,但通常只用來擴展Web服務器的應用程序。

詳解Java Servlet與Applet比較 - yasi_xi的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/yasi_xi/article/details/22071099

Java Servlet與Applet相似之處:

◆它們不是獨立的應用程序,沒有main()方法。

◆它們不是由用戶或程序員調用,而是由另外一個應用程序(容器)調用。

◆它們都有一個生存周期,包含init()和destroy()方法。

Java Servlet與Applet不同之處:

◆Applet具有很好的圖形界面(AWT),與瀏覽器一起,在客戶端運行。

◆Servlet 則沒有圖形界面,運行在服務器端。

Java Servlet 與 CGI(Common Gateway Interface) 的比較:

與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。在未來的技術發展過程中,Servlet有可能徹底取代CGI。

◆高效

在傳統的CGI中,每個請求都要啟動一個新的進程,如果CGI程序本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統進程)。

在傳統CGI中,如果有N個並發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對於Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有著更多的選擇。

◆方便

Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。

◆功能強大

在Servlet中,許多使用傳統CGI程序很難完成的任務都可以輕松地完成。例如,Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。

◆可移植性好

Servlet用Java編寫,Servlet API具有完善的標準。因此,為IPlanet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。

◆節省投資

Java Servlet與Applet不僅有許多廉價甚至免費的Web服務器可供個人或小規模網站使用,而且對於現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。

Java Servlet 與 JSP(JavaServer Pages) 的比較:

JavaServer Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP並沒有增加任何本質上不能用Servlet實現的功能。但是,在 JSP中編寫靜態HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開:比如,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。

Java Servlet API 2.2 簡介

Java Servlet API 2.2 的類和接口組成兩個Java 包,即:javax.servlet 和 javax.servlet.http(還包括javax.servlet.jsp包,不在本篇文章討論範圍之內)。

javax.servlet 包提供了控制 Servlet 生命周期所必需的 Servlet 接口,是編寫 Servlet 時必須要實現的。

javax.servlet.http 包提供了從Servlet 接口派生出的專門用於處理 HTTP 請求的抽象類和一般的工具類。所有的Servlet 對象都要實現Servlet 接口,大多數情況下是作為已經實現了Servlet 接口的javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 這兩個抽象類的子類來間接實現Servlet 接口。

Applet、Scriptlet與Servlet