J2ME中的通用聯(lián)網(wǎng)框架簡介_JSP教程
推薦:J2ME平臺簡介做J2ME應(yīng)用開發(fā)的程序員也許經(jīng)常會被一些名詞或者概念所迷惑,比如Personal Basic Profile和Personal Profile有什么關(guān)系?基于CLDC的應(yīng)用程序能夠無修改的移植到基于CDC的設(shè)備上嘛?要
通用聯(lián)網(wǎng)框架在J2ME平臺中扮演著十分重要的角色,如果沒有它,我們寫的應(yīng)用程序?qū)ν馊藖碚f只能說“神秘”,而應(yīng)用了通用聯(lián)網(wǎng)框架進行聯(lián)網(wǎng)的程序就顯得“神奇”了。本文將對通用聯(lián)網(wǎng)框架進行整體的分析,具體的應(yīng)用會在后續(xù)的文章詳細講述。
Generic Connection Framework(以下簡稱GCF)是在CLDC中定義的,由于移動信息設(shè)備的資源受限特性,所以java.net和java.io包不適合在這里使用。現(xiàn)實世界中使用著各種各樣的網(wǎng)絡(luò)通信協(xié)議,這使得設(shè)計好這個框架非常不容易,至少我是這么認為的。然而當(dāng)我們分析GCF的時候可以清楚地發(fā)現(xiàn)它有如下幾個特性:基于接口設(shè)計,便于擴展、提供創(chuàng)建連接的工廠方法、使用標(biāo)準(zhǔn)URL簡化了程序員的工作。
當(dāng)我們察看CLDC1.1的api的時候我們可以發(fā)現(xiàn)其中定義了8個接口、一個Connector類和一個ConnectionNotFoundException異常。在MIDP2.0中進行了擴展,提供了HttpConnection、HttpsConnection接口,這樣使得MIDlet具備了通過Http或者Https協(xié)議與server通信的能力,提供了SocketConnection、ServerSocketConnection、UDPDatagramConnection接口,使得MIDlet能夠在TCP/IP層通過socket進行通信或者使用數(shù)據(jù)報進行通信的能力。至于CommConnection以及PUSH技術(shù)在這里不講述。
結(jié)合GCF的接口層次圖來了解通用聯(lián)網(wǎng)框架是最好的辦法,下面我們看看它的層次結(jié)構(gòu)。
<
最上層的接口是Connection,其他的接口都從他那里繼承。在Connection中只定義了一個方法close()。在我們的現(xiàn)實世界中通常使用的是分組數(shù)據(jù)交換和電路交換,因此在聯(lián)網(wǎng)框架中相應(yīng)的定義了DatagramConnection和StreamConnection。由于在基于流傳輸中我們需要對輸入流和輸出流通是具有操作的能力,因此StreamConnection擴展了InputConnection和OutputConneciton,我們經(jīng)常使用的Conn.openInputStream(),conn.openOutputStream()方法都是在這兩個重要的接口中定義的。StreamConnectionNotifier接口定義了連接監(jiān)聽器應(yīng)該具備的能力,它的方法acceptAndOpen()方法返回一個StreamConnection類型的連接,ServerSocketConnection繼承了StreamConnectionNotifier接口,這樣如果你做socket server的時候就可以通過使用這樣的URL,socket://:port在你的設(shè)備上建立監(jiān)聽端口等待連接。SocketConnection繼承了StreamConnection正好可以和ServerSocketConnection交相輝映。UDPDatagramConnection則是為了在分組數(shù)據(jù)交換中使用,他繼承了DatagramConnection接口。ContentConnection接口中只定義了三個方法getEncoding(),getLength()和getType(),我們非常熟悉的HttpConnection就是他的子類,在HttpConnection中定義了大量的操作,Http聯(lián)網(wǎng)功能也是MIDP規(guī)范中要求廠商必須支持的連接方式。現(xiàn)在你應(yīng)該對層次比較清楚了吧,繼續(xù)往下看如何使用GCF。
GCF的是使用非常簡單,主要集中在Connector的open()方法上。我們要做的就是提供一個標(biāo)準(zhǔn)的URL參數(shù)傳遞給open方法,例如為了得到一個HttpConnection我們應(yīng)該寫類似下面的代碼,
String url = “http://myip:myport/myservlet”;
HttpConnection httpConn = (HttpConnection)Connector.open(url);
我們應(yīng)該清楚這個URL的格式如何定義的,有興趣的話你可以參考RFC2396,我這里只列入他的基本格式:{scheme}:[{target}][{parms}] ,針對不同的網(wǎng)絡(luò)通信方式,你要做的就是寫出不同的URL,并通過強制轉(zhuǎn)換得到你需要的連接類型。這篇文章不提供如何進行數(shù)據(jù)傳輸?shù)牟僮�,你可以參考MIDP API文檔中HttpConnection接口中的詳細說明,也可以參考下面這篇文章http://blog.csdn.net/mingjava/archive/2004/07/07/36528.aspx
在數(shù)據(jù)傳輸結(jié)束后不要忘記關(guān)閉連接,這時候你就應(yīng)該使用Connection中定義的close()方法了。
try { |
至此,關(guān)于GCF的整體介紹就結(jié)束了。我們應(yīng)該清楚GCF的接口層次關(guān)系、掌握如何使用GCF。同時不要忘記把這個框架的設(shè)計銘記于心,事實上我覺得CLDC和MIDP中很多設(shè)計都值得我們?nèi)ザ喽嗟乃伎肌?/p>
分享:J2ME Timer 使用指南J2SE 1.3 里有一項新的改進,那就是提供了一個可以更簡單的實現(xiàn)多任務(wù)調(diào)度執(zhí)行的定時器類,調(diào)度由一個后臺線程完成。MIDP 同樣也包含了這一改進,使得 J2ME 開發(fā)人員從中受益。 J2M
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實現(xiàn)
- 網(wǎng)頁模板:關(guān)于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項目中連接Access數(shù)據(jù)庫的配置方法
- JDBC連接Access數(shù)據(jù)庫的幾種方式介紹
- 網(wǎng)站圖片路徑的問題:絕對路徑/虛擬路徑
- (jsp/html)網(wǎng)頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對路徑下的圖片解決方法
- 相關(guān)鏈接:
- 教程說明:
JSP教程-J2ME中的通用聯(lián)網(wǎng)框架簡介
。