網站建設是指使用標識語言(markup language),通過一系列設計、建模、和執行的過程將電子格式的信息通過互聯網傳輸,最終以圖形用戶界面(GUI)的形式被用戶所瀏覽。簡單來說,網頁設計的目的就是產生網站。簡單的信息如文字,圖片(GIF,JPEG,PNG)和表格,都可以通過使超文件標示語言、可擴展超文本標記語言等標示語言放置到網站頁面上。 一、什么是動態內容 使用瀏覽器窗口對象的setTimeOut函數定期地刷新頁面。但是,用這種方法刷新廣告時,用戶會很明顯地感到頁面刷新過程;同時,要確定一個合適的刷新頻率也很困難。 二、用Java實現內容推送 Web服務器只在80端口監聽連接請求。因此,除了Web服務器之外,我們還需要一個接受Applet的Socket連接請求的網絡應用服務。這個網絡應用服務定時地查詢數據庫,把改動數據發布(推送)到所有已經連接的Applet。由于運用了隱藏幀和JavaScript的幀間通信功能,我們能夠從用戶面前隱藏大多數JavaScript邏輯。 在這整個處理過程中,最困難的任務是Java Applet與JavaScript代碼之間的通信。Netscape提供了一個稱為netscape.javascript.JSObject的類。要使用這個對象,請加入一個包含特殊“MAYSCRIPT”屬性的Applet標記: <APPLET code="MyApplet.class" height=1 width=1 MAYSCRIPT> JSObject的方法允許Applet與文檔對象交互以及調用JavaScript命令。例如,把下面的代碼放入Applet,我們就能夠訪問窗口對象: import netscape.javascript.*; public class MyApplet extends java.applet.Applet{ private JSObject mainwin; public void init(){ mainwin = JSObject.getWindow(this); } } 獲得JSObject引用后,我們就能夠訪問文檔窗口對象,并通過JSObject的eval()方法調用JavaScript函數。 三、用DHTML更新頁面 對于IE以及Netscape 6,這個HTML標記是: // 所有要更新的內容必須用id標識 <div id="iexplorer" width=700px ></div>
<DATA><layer id="netscapev" ></layer></DATA> 雖然我們可以通過引用適當的ID,從Applet直接更新HTML內容,但為了清楚起見,我們將把更新HTML代碼的程序邏輯放入JavaScript函數。下面的JavaScript代碼把瀏覽器的類型保存到ie變量: applnname=navigator.appName; if(applnname=="Microsoft Internet Explorer") { ie=true; } else { ie=false; } Applet從新數據構造出HTML代碼,把它保存到JavaScript變量content,然后調用assignData()方法。內容數據可以是從純HTML到XML到二進制數據的任何東西。 // 根據瀏覽器類型調用合適的方法 function assignData() { if(ie) {explore();} else {navig(); } }
//content是一個javascript變量,它以HTML格式描述了需要 //顯示的新數據 function explore() { iexplorer.innerHTML=content; } 如果瀏覽器是Netscape 4.0或者更高版本,Applet調用navig()方法: function navig() { document.netscapev.document.write(“<DATA>“ + content + “</DATA>“); document.netscapev.document.close(); } 四、通信過程 在客戶端,一個隱藏幀包含了ImageApplet.java這個Applet,因此用瀏覽器的查看HTML源代碼功能是無法看到Applet標記的。Applet實現了連接服務器(下載該Applet的源服務器)的功能,并實現了一個簡單的通信協議。建立與服務器的連接之后,Applet接收來自服務器的數據,構造出HTML代碼,并調用JavaScript函數把數據傳入文檔: public void upDateHTML(String str){ //data是表單的名字, //quote是一個JavaScript變量 //str是新構造出來的HTML代碼 mainwin.eval("document.data.quote.value=“" + str + "“"); mainwin.eval("javascript:assignData()"); return; } netscape.javascript.JSObject完成Applet到JavaScript的通信,不同版本的客戶端瀏覽器需要不同的版本。你可以下載得到為Netscape提供的壓縮類文件java40.jar。IE已經帶有JSObject類,但有點難找。你可以搜索$windows$\Java\Packages目錄尋找包含JSObject類的ZIP文件。 服務器把ImageArrayElement.java類的實例通過toString()方法串行化成為字符串發送給Applet。服務器從數據文件構造出各個對象,調用toString()方法,連接得到代表所有對象的字符串,最后發送結果字符串。而在另一端,Applet接收并解析這個字符串,重新構造出各個ImageArrayElement對象。這里之所以用一個長字符串的形式發送數據,是因為這種方法只需要很簡單的處理過程,使得用戶能夠以接近實時的速度立即得知數據的變化;但是,我們也可以用另外一種方法,即以向量的形式發送對象。 在一個正式運行的應用中,你一般應該讓新數據插入當前頁面的過程透明。但在示例應用中,為了讓程序運行過程更加直觀,它將在新內容到達的時候提示用戶。 推送技術最主要的優點就是應用服務器只把那些改變的數據發送到網絡,從而使得延遲減到了最少。由于這個Applet負責完成的工作非常少(不涉及用戶界面,這部分工作由瀏覽器負責),所以Applet體積很小,裝載速度非?臁 五、如何運行本文實例 安裝要點: 解開ZIP壓縮文件并安裝到Web服務器默認根目錄。 <ul><li> <a href="/exp/ImageMain.htm"> Java based dynamic Ad-Banner</a></li> </ul> 運行應用的步驟: 打開一個DOS窗口,進入<默認Web目錄>/exp,執行“java ImageApplication”。系統將顯示“Server started listening at port 6011”。注意確保classpath環境變量指向了當前工作目錄。 |
溫馨提示:喜歡本站的話,請收藏一下本站!