標籤:動態 view 本地 執行 jvm get 聊天 網上 對象
Applet、Scriptlet與Servlet - 青春念邵的部落格 - 部落格頻道 - CSDN.NET
http://blog.csdn.net/mo_fan_qing_wa/article/details/50016575
小應用程式AppletApplet簡介
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