Java EE(五)

1、Applet

Applet 是一種 Java 程序。它通常運行在支持 Java 的 Web 瀏覽器內。由於它有完整的 Java API支持,因此Applet 是一個全功能的 Java 應用程序。html

以下所示是獨立的 Java 應用程序和 applet 程序之間重要的不一樣:前端

  • Java 中 Applet 類繼承了 java.applet.Applet 類。
  • Applet 類沒有定義 main(),因此一個 Applet 程序不會調用 main() 方法。
  • Applet 被設計爲嵌入在一個 HTML 頁面。
  • 當用戶瀏覽包含 Applet 的 HTML 頁面,Applet 的代碼就被下載到用戶的機器上。
  • 要查看一個 Applet 須要 JVM。 JVM 能夠是 Web 瀏覽器的一個插件,或一個獨立的運行時環境。
  • 用戶機器上的 JVM 建立一個 Applet 類的實例,並調用 Applet 生命週期過程當中的各類方法。
  • Applet 有 Web 瀏覽器強制執行的嚴格的安全規則,Applet 的安全機制被稱爲沙箱安全。
  • Applet 須要的其餘類能夠用 Java 歸檔(JAR)文件的形式下載下來。

    Applet的生命週期

    Applet 類中的四個方法給你提供了一個框架,你能夠再該框架上開發小程序:java

    • init: 該方法的目的是爲你的 Applet 提供所需的任何初始化。在 Applet 標記內的 param 標籤被處理後調用該方法。
    • start: 瀏覽器調用 init 方法後,該方法被自動調用。每當用戶從其餘頁面返回到包含 Applet 的頁面時,則調用該方法。
    • stop: 當用戶從包含 Applet 的頁面移除的時候,該方法自動被調用。所以,能夠在相同的 Applet 中反覆調用該方法。
    • destroy: 此方法僅當瀏覽器正常關閉時調用。由於 Applet 只有在 HTML 網頁上有效,因此你不該該在用戶離開包含 Applet 的頁面後遺漏任何資源。
      • paint: 該方法在 start() 方法以後當即被調用,或者在 Applet 須要重繪在瀏覽器的時候調用。paint() 方法實際上繼承於 java.awt。

          Applet 類

        每個 Applet 都是 java.applet.Applet 類的子類,基礎的 Applet 類提供了供衍生類調用的方法,以此來獲得瀏覽器上下文的信息和服務。web

        這些方法作了以下事情:小程序

        • 獲得 Applet 的參數
        • 獲得包含 Applet 的 HTML 文件的網絡位置
        • 獲得 Applet 類目錄的網絡位置
        • 打印瀏覽器的狀態信息
        • 獲取一張圖片
        • 獲取一個音頻片斷
        • 播放一個音頻片斷
        • 調整此 Applet 的大小

        除此以外,Applet 類還提供了一個接口,該接口供 Viewer 或瀏覽器來獲取 Applet 的信息,而且來控制 Applet 的執行。後端

        Viewer 多是:瀏覽器

        • 請求 Applet 做者、版本和版權的信息
        • 請求 Applet 識別的參數的描述
        • 初始化 Applet
        • 銷燬 Applet
        • 開始執行 Applet
        • 結束執行 Applet

        Applet 類提供了對這些方法的默認實現,這些方法能夠在須要的時候重寫。安全

        "Hello,World"applet 都是按標準編寫的。惟一被重寫的方法是 paint 方法。

        服務器

        Applet 的調用

        Applet 是一種 Java 程序。它通常運行在支持 Java 的 Web 瀏覽器內。由於它有完整的 Java API 支持,因此 Applet 是一個全功能的 Java 應用程序。網絡

        <applet> 標籤是在HTML文件中嵌入 Applet 的基礎。如下是一個調用"Hello World"applet的例子;

        示例HTML 代碼:

        <html>
        <title>The Hello, World Applet</title>
        <hr> <applet code="HelloWorldApplet.class" width="320" height="120">
        If your browser was Java-enabled, a "Hello, World"
        message would appear here.
        </applet>
        <hr>
        </html>

    2、Ajax

    Ajax 即「A synchronous J avascript And X ML」(異步 JavaScript 和 XML),是指一種建立交互式 網頁應用的網頁開發技術。
    Ajax = 異步  JavaScript 和  XML標準通用標記語言的子集)。
    Ajax 是一種用於建立快速動態網頁的技術。
    Ajax 是一種在無需從新加載整個網頁的狀況下,可以更新部分網頁的技術。  [1] 
    經過在後臺與服務器進行少許數據交換,Ajax 可使網頁實現異步更新。這意味着能夠在不從新加載整個網頁的狀況下,對網頁的某部分進行更新。
    傳統的網頁(不使用 Ajax)若是須要更新內容,必須重載整個網頁頁面。

    1.工做原理

    Ajax的工做原理至關於在用戶和服務器之間加了—箇中間層(AJAX引擎),使用戶操做與服務器響應異步化。並非全部的用戶請求都提交給服務器,像—些數據驗證和數據處理等都交給Ajax引擎本身來作, 只有肯定須要從服務器讀取新數據時再由Ajax引擎代爲向服務器提交請求。

    2.與傳統web應用比較

    傳統的Web應用交互由用戶觸發一個HTTP請求到服務器,服務器對其進行處理後再返回一個新的HTHL頁到客戶端, 每當服務器處理客戶端提交的請求時,客戶都只能空閒等待,而且哪怕只是一次很小的交互、只需從服務器端獲得很簡單的一個數據,都要返回一個完整的HTML頁,而用戶每次都要浪費時間和帶寬去從新讀取整個頁面。這個作法浪費了許多帶寬,因爲每次應用的交互都須要向服務器發送請求,應用的響應時間就依賴於服務器的響應時間。這致使了用戶界面的響應比本地應用慢得多。與此不一樣,AJAX應用能夠僅向服務器發送並取回必需的數據,它使用SOAP或其它一些基於XML的Web Service接口,並在客戶端採用JavaScript處理來自服務器的響應。由於在服務器和瀏覽器之間交換的數據大量減小,結果咱們就能看到響應更快的應用。同時不少的處理工做能夠在發出請求的客戶端機器上完成,因此Web服務器的處理時間也減小了。

    3.優缺點

    (1).AJAX的優勢
    <1>.無刷新更新數據。
    AJAX最大優勢就是能在不刷新整個頁面的前提下與服務器通訊維護數據。這使得Web應用程序更爲迅捷地響應用戶交互,並避免了在網絡上發送那些沒有改變的信息,減小用戶等待時間,帶來很是好的用戶體驗。
    <2>.異步與服務器通訊。
    AJAX使用異步方式與服務器通訊,不須要打斷用戶的操做,具備更加迅速的響應能力。優化了Browser和Server之間的溝通,減小沒必要要的數據傳輸、時間及下降網絡上數據流量。
    <3>.前端和後端負載平衡。
    AJAX能夠把之前一些服務器負擔的工做轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。而且減輕服務器的負擔,AJAX的原則是「按需取數據」,能夠最大程度的減小冗餘請求和響應對服務器形成的負擔,提高站點性能。
    <4>.基於標準被普遍支持。
    AJAX基於標準化的並被普遍支持的技術,不須要下載瀏覽器插件或者小程序,但須要客戶容許JavaScript在瀏覽器上執行。隨着Ajax的成熟,一些簡化Ajax使用方法的程序庫也相繼問世。一樣,也出現了另外一種輔助程序設計的技術,爲那些不支持JavaScript的用戶提供替代功能。
    <5>.界面與應用分離。
    Ajax使WEB中的界面與應用分離(也能夠說是數據與呈現分離),有利於分工合做、減小非技術人員對頁面的修改形成的WEB應用程序錯誤、提升效率、也更加適用於如今的發佈系統。

    (2).AJAX的缺點<1>.AJAX幹掉了Back和History功能,即對瀏覽器機制的破壞。在動態更新頁面的狀況下,用戶沒法回到前一個頁面狀態,由於瀏覽器僅能記憶歷史記錄中的靜態頁面。一個被完整讀入的頁面與一個已經被動態修改過的頁面之間的差異很是微妙;用戶一般會但願單擊後退按鈕可以取消他們的前一次操做,可是在Ajax應用程序中,這將沒法實現。後退按鈕是一個標準的web站點的重要功能,可是它無法和js進行很好的合做。這是Ajax所帶來的一個比較嚴重的問題,由於用戶每每是但願可以經過後退來取消前一次操做的。那麼對於這個問題有沒有辦法?答案是確定的,用過Gmail的知道,Gmail下面採用的Ajax技術解決了這個問題,在Gmail下面是能夠後退的,可是,它也並不能改變Ajax的機制,它只是採用的一個比較笨可是有效的辦法,即用戶單擊後退按鈕訪問歷史記錄時,經過建立或使用一個隱藏的IFRAME來重現頁面上的變動。(例如,當用戶在Google Maps中單擊後退時,它在一個隱藏的IFRAME中進行搜索,而後將搜索結果反映到Ajax元素上,以便將應用程序狀態恢復到當時的狀態。)可是,雖說這個問題是能夠解決的,可是它所帶來的開發成本是很是高的,並與Ajax框架所要求的快速開發是相背離的。這是Ajax所帶來的一個很是嚴重的問題。一個相關的觀點認爲,使用動態頁面更新使得用戶難於將某個特定的狀態保存到收藏夾中。該問題的解決方案也已出現,大部分都使用URL片段標識符(一般被稱爲錨點,即URL中#後面的部分)來保持跟蹤,容許用戶回到指定的某個應用程序狀態。(許多瀏覽器容許JavaScript動態更新錨點,這使得Ajax應用程序可以在更新顯示內容的同時更新錨點。)這些解決方案也同時解決了許多關於不支持後退按鈕的爭論。<2>.AJAX的安全問題。AJAX技術給用戶帶來很好的用戶體驗的同時也對IT企業帶來了新的安全威脅,Ajax技術就如同對企業數據創建了一個直接通道。這使得開發者在不經意間會暴露比之前更多的數據和服務器邏輯。Ajax的邏輯能夠對客戶端的安全掃描技術隱藏起來,容許黑客從遠端服務器上創建新的攻擊。還有Ajax也難以免一些已知的安全弱點,諸如跨站點腳步攻擊、SQL注入攻擊和基於Credentials的安全漏洞等等。<3>.對搜索引擎支持較弱。對搜索引擎的支持比較弱。若是使用不當,AJAX會增大網絡數據的流量,從而下降整個系統的性能。<4>.破壞程序的異常處理機制。至少從目前看來,像Ajax.dll,Ajaxpro.dll這些Ajax框架是會破壞程序的異常機制的。關於這個問題,曾在開發過程當中遇到過,可是查了一下網上幾乎沒有相關的介紹。後來作了一次試驗,分別採用Ajax和傳統的form提交的模式來刪除一條數據……給咱們的調試帶來了很大的困難。<5>.違背URL和資源定位的初衷。例如,我給你一個URL地址,若是採用了Ajax技術,也許你在該URL地址下面看到的和我在這個URL地址下看到的內容是不一樣的。這個和資源定位的初衷是相背離的。<6>.AJAX不能很好支持移動設備。一些手持設備(如手機、PDA等)如今還不能很好的支持Ajax,好比說咱們在手機的瀏覽器上打開採用Ajax技術的網站時,它目前是不支持的。<7>.客戶端過肥,太多客戶端代碼形成開發上的成本。編寫複雜、容易出錯 ;冗餘代碼比較多(層層包含js文件是AJAX的通病,再加上以往的不少服務端代碼如今放到了客戶端);破壞了Web的原有標準。

相關文章
相關標籤/搜索