Java EE第五週

Java Applet 

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

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

  • 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 類中的四個方法給你提供了一個框架,你能夠再該框架上開發小程序:web

  • 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 類提供了供衍生類調用的方法,以此來獲得瀏覽器上下文的信息和服務。編程

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

  • 獲得 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 應用程序。app

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

1
2
3
4
5
6
7
8
9
< 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 >

  

得到applet參數

下面的例子演示瞭如何使用一個 Applet 響應來設置文件中指定的參數。該 Applet 顯示了一個黑色棋盤圖案和第二種顏色。

第二種顏色和每一列的大小經過文檔中的 Applet 的參數指定。

CheckerApplet 在 init() 方法裏獲得它的參數。也能夠在 paint() 方法裏獲得它的參數。然而,在 Applet 開始獲得值並保存了設置,而不是每一次刷新的時候都獲得值,這樣是很方便,而且高效的。

Applet viewer 或者瀏覽器在 Applet 每次運行的時候調用 init() 方法。在加載 Applet 以後,Viewer 當即調用 init() 方法(Applet.init()什麼也沒作),重寫該方法的默認實現,添加一些自定義的初始化代碼。

Applet.getParameter() 方法經過給出參數名稱獲得參數值。若是獲得的值是數字或者其餘非字符數據,那麼必須解析爲字符串類型。

下例是 CheckerApplet.java 的修改:

1
2
3
4
5
6
7
8
9
10
import java.applet.*;
import java.awt.*;
public class CheckerApplet extends Applet
{
    int squareSize = 50 ; // 初始化默認大小
    public void init () {}
    private void parseSquareSize (String param) {}
    private Color parseColor (String param) {}
    public void paint (Graphics g) {}
}

  下面是 CheckerApplet 類的 init() 方法和私有的 parseSquareSize() 方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void init ()
{
    String squareSizeParam = getParameter ( "squareSize" );
    parseSquareSize (squareSizeParam);
    String colorParam = getParameter ( "color" );
    Color fg = parseColor (colorParam);
    setBackground (Color.black);
    setForeground (fg);
}
private void parseSquareSize (String param)
{
    if (param == null ) return ;
    try {
       squareSize = Integer.parseInt (param);
    }
    catch (Exception e) {
      // 保留默認值
    }
}

  

該 Applet 調用 parseSquareSize(),來解析 squareSize 參數。parseSquareSize() 調用了庫方法 Integer. parseInt() 該方法將一個字符串解析爲一個整數,當參數無效的時候,Integer.parseInt() 拋出異常。

所以,parseSquareSize() 方法也是捕獲異常的,並不容許 Applet 接受無效的輸入。

Applet 調用 parseColor()方法將顏色參數解析爲一個 Color 值。parseColor() 方法作了一系列字符串的比較,來匹配參數的值和預約義顏色的名字。你須要實現這些方法來使 Applet 工做。

 

應用程序轉換成 Applet

將圖形化的 Java 應用程序(是指,使用AWT的應用程序和使用 java 程序啓動器啓動的程序)轉換成嵌入在web頁面裏的applet是很簡單的。

下面是將應用程序轉換成 Applet 的幾個步驟:

  • 編寫一個 HTML 頁面,該頁面帶有能加載 applet 代碼的標籤。
  • 編寫一個 JApplet 類的子類,將該類設置爲 public。不然,Applet 不能被加載。
  • 消除應用程序的 main()方法。不要爲應用程序構造框架窗口,由於你的應用程序要顯示在瀏覽器中。
  • 將應用程序中框架窗口的構造方法裏的初始化代碼移到 Applet 的 init() 方法中,你沒必要顯示的構造 Applet 對象,瀏覽器將經過調用 init() 方法來實例化一個對象。
  • 移除對 setSize() 方法的調用,對於 Applet 來說,大小已經經過 HTML 文件裏的 width 和 height 參數設定好了。
  • 移除對 setDefaultCloseOperation() 方法的調用。Applet 不能被關閉,它隨着瀏覽器的退出而終止。
  • 若是應用程序調用了 setTitle() 方法,消除對該方法的調用。applet 不能有標題欄。(固然你能夠給經過 html 的 title 標籤給網頁自身命名)
  • 不要調用 setVisible(true),Applet 是自動顯示的。

 

AJAX 

AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。

AJAX 不是新的編程語言,而是一種使用現有標準的新方法。

AJAX 最大的優勢是在不從新加載整個頁面的狀況下,能夠與服務器交換數據並更新部分網頁內容。

AJAX 不須要任何瀏覽器插件,但須要用戶容許JavaScript在瀏覽器上執行。

 

AJAX 應用

  • 運用XHTML+CSS來表達資訊;

  • 運用JavaScript操做DOM(Document Object Model)來執行動態效果;

  • 運用XML和XSLT操做資料;

  • 運用XMLHttpRequest或新的Fetch API與網頁服務器進行異步資料交換;

  • 注意:AJAX與Flash、Silverlight和Java Applet等RIA技術是有區分的。

AJAX 工做原理

 

 

AJAX是基於現有的Internet標準

AJAX是基於現有的Internet標準,而且聯合使用它們:

  • XMLHttpRequest 對象 (異步的與服務器交換數據)
  • JavaScript/DOM (信息顯示/交互)
  • CSS (給數據定義樣式)
  • XML (做爲轉換數據的格式)

lamp  AJAX應用程序與瀏覽器和平臺無關的!

 

AJAX 實例解析

上面的 AJAX 應用程序包含一個 div 和一個按鈕。

div 部分用於顯示來自服務器的信息。當按鈕被點擊時,它負責調用名爲 loadXMLDoc() 的函數:

1
2
< div id="myDiv">< h2 >使用 AJAX 修改該文本內容</ h2 ></ div >
< button type="button" onclick="loadXMLDoc()">修改內容</ button >

  接下來,在頁面的 head 部分添加一個 <script> 標籤。該標籤中包含了這個 loadXMLDoc() 函數:

1
2
3
4
5
6
7
8
< head >
< script >
function loadXMLDoc()
{
     .... AJAX 腳本執行 ...
}
</ script >
</ head >
相關文章
相關標籤/搜索