日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

J2ME的重要功能簡介1_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:J2ME及其基本慨念
如果您曾經(jīng)http://www.javasoft.com ;網(wǎng)站上查詢有關(guān)Java 2 Micro Edition 的資料,十之八九會被一大堆的技術(shù)名詞搞的一頭霧水。 什么 KVM ,什么CLDC 、CDC 、MIDP ,后面面還冒出了P

持久數(shù)據(jù)和記錄管理系統(tǒng)( Record Management System,簡稱 RMS

MIDP提供在移動設(shè)備上存儲持久數(shù)據(jù)的支持,并且 MID簡表還特意規(guī)定兼容的移動設(shè)備必須提供至少 8KB的非動態(tài)內(nèi)存用于數(shù)據(jù)存儲的用途,時式上,大多數(shù)的 MIDP Java設(shè)備提供的空間比這要求多得多。這就允許一個midlet充份利用應(yīng)用程序的持久數(shù)據(jù)。對于有 Java 2標(biāo)準(zhǔn)版開發(fā)經(jīng)驗的開發(fā)者,應(yīng)該注意這種數(shù)據(jù)存儲能力與標(biāo)準(zhǔn)的 Java有區(qū)別。J2ME記錄管理系統(tǒng) ( RMS )允許數(shù)據(jù)流被儲存并且在一個記錄基礎(chǔ)上訪問數(shù)據(jù)。由應(yīng)用程序開發(fā)者把每個記錄解析到字段水平。RMS程序包內(nèi)部的接口支持一個應(yīng)用程序定義的基礎(chǔ)上的比較與檢索功能。

一、javax.microedition.rms程序包

通過 javax.microedition.rms包訪問 J2ME記錄管理系統(tǒng),這個包包括一個類, RecordStore,和好幾個有用的接口 (在下列表格中描述 ):

接口 描述
RecordComparator 一個接口,定義一個比較機制,比較兩個記錄(以一個實現(xiàn)定義的方式)看它們是否匹配或它們的相對排序次序是什么樣的。
RecordEnumeration 一個接口,一個雙向的紀(jì)錄模擬器
RecordFilter 一個接口,定義了一個過濾器用于檢查一個記錄,看其是否匹配 (基于一種應(yīng)用程序定義的標(biāo)準(zhǔn) )。
RecordListener 一個監(jiān)聽者接口,從一個記錄存儲器中接受記錄更改/添加/刪除事件。


這些接口對于實現(xiàn)自定義搜索和檢索功能很有用,這些接口中使用的最多的就是 RecordEnumeration。這個接口從 RecordStore.enumerateRecords()方法調(diào)用中返回并且被用于遍歷一組從記錄存儲器中返回的記錄。它包含 nextRecord()、 previousRecord()、 numRecords()和 hasNextElement()等方法。

二、使用RecordStore類訪問記錄存儲

RecordStore類是開發(fā)者開發(fā)基層 RMS的接口,記錄儲存是在一個平臺--midlet環(huán)境依賴的方式--上創(chuàng)建的。信息的實際的位置和存儲細(xì)節(jié)應(yīng)用程序開發(fā)者其實并不知道,記錄存儲可以使用一種簡單的命名規(guī)則來訪問:名稱最多可以到32個Unicode字符長度,區(qū)分大小寫和必須在一個 midlet套件內(nèi)唯一。在一個 midlet套件內(nèi)的所有 midlet都有讀/寫一個記錄存儲的權(quán)限,只要它們知道正確的名稱。一旦這個 midlet套件被從該設(shè)備上刪除,所有與這個套件關(guān)聯(lián)的記錄存儲也將被刪除。

比如說,為了打開一個名為 TestRecordSet的記錄存儲,你可以調(diào)用 RecordStore.openRecordStore()方法。這個方法使用兩個參數(shù):一個字符串,表示記錄存儲的名稱;一個布爾值,如果為真的話,就會在紀(jì)錄存儲不存在時創(chuàng)建一個。我們使下列方法調(diào)用創(chuàng)建新的 TestRecordSet記錄存儲:

RecordStore rs = null;

rs = RecordStore.openRecordStore("TestRecordSet", true);


記錄存儲被創(chuàng)建好后,我們可以通過調(diào)用 RecordStore.addRecord()方法來向這個記錄存儲添加數(shù)據(jù)。addRecord()接受三個參數(shù):

參數(shù) 描述
byte[] data 一個儲存在記錄中的字節(jié)數(shù)據(jù)數(shù)組,通過 java.io.ByteArrayOutputStream和 java.io.DataOutputStream類把數(shù)據(jù)添加到這個字節(jié)數(shù)組。
int offset 進入這個記錄第一個關(guān)聯(lián)字節(jié)數(shù)據(jù)緩沖區(qū)的索引。
int numBytes 用于記錄的數(shù)據(jù)緩沖區(qū)的字節(jié)數(shù)

一旦成功完成 addRecord()調(diào)用 ,這個方法就返回一個整數(shù)指定這個記錄在記錄存儲中的標(biāo)識號。 RecordStore還規(guī)定另外一個數(shù)據(jù)編輯方法,包括 setRecord()和 deleteRecord(),但是我在例子中不會使用它們。

三、構(gòu)建一個用于J2ME設(shè)備的通訊錄

這個例子構(gòu)造一個基本的通訊錄應(yīng)用程序,使用它用戶就可以從一個移動設(shè)備上查看聯(lián)絡(luò)資料�,F(xiàn)在我只介紹從本地設(shè)備中存儲的數(shù)據(jù)中讀出相關(guān)的聯(lián)絡(luò)資料,在本文稍后的部分,你將看到如何使用J2ME網(wǎng)絡(luò)功能從一個 Web服務(wù)器取回數(shù)據(jù)文件!用戶將能查看一個地址列表和從這個列表選擇一個地址。為了實現(xiàn)這個目標(biāo),我們要創(chuàng)建兩個類,從用戶界面邏輯中把數(shù)據(jù)存取邏輯分開的: AddressDB類封裝所有的 RMS代碼; AddressBookMIDLet類封裝 GUI代碼。AddressDB類的代碼如下:

import javax.microedition.rms.*;import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.EOFException;

import java.io.IOException;

public class AddressDB {

private static RecordStore rs = null;

public AddressDB() {

try {

rs = RecordStore.openRecordStore("addressbook", true);

}

catch (RecordStoreException e) {

System.out.println(e);

e.printStackTrace();

}

}

public void addAddress(String Name, String Address) {

ByteArrayOutputStream os = new ByteArrayOutputStream();

DataOutputStream output = new DataOutputStream(os);

try {

output.writeUTF(Name "," Address);

}

catch (IOException e) {

System.out.println(e);

e.printStackTrace();

}

byte[] b = os.toByteArray();

try {

rs.addRecord(b, 0, b.length);

}

catch (RecordStoreException e) {

System.out.println(e);

e.printStackTrace();

}

}

public static String getName(int index) {

int counter = 1;

int commalocation = 0;

String name = null;

try {

RecordEnumeration enumRec =

rs.enumerateRecords(null, null, false);

while ((counter <= index) && (enumRec.hasNextElement())) {

String strTemp = new String(enumRec.nextRecord());

commalocation = strTemp.indexOf(',');

name = strTemp.substring(2, commalocation);

counter ;

}

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return name;

}

public static String getAddress(int index) {

int counter = 1;

int commalocation = 0;

String address = null;

try {

RecordEnumeration enumRec =

rs.enumerateRecords(null, null, false);

while ((counter <= index) && (enumRec.hasNextElement())) {

String strTemp = new String(enumRec.nextRecord());

commalocation = strTemp.indexOf(',');

address = strTemp.substring(commalocation 1);

counter ;

}

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return address;

}

public static int recordCount() {

int count = 0;

try {

count = rs.getNumRecords();

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return count;

}

}



AddressDB類包含好幾個 public訪問方法,它們都對來自外部調(diào)用者的訪問隱藏記錄存儲的細(xì)節(jié)。AddressDB()構(gòu)造程序調(diào)用 RecordStore.openRecordStore(),正如前面討論的那樣。我也創(chuàng)建了四個助手方法用于訪問基層記錄存儲: recordCount()、 getAddress()、 getName()和 addAddress()。注意,在本例子中addAddress()方法只是在 name/address字段之間放了一個逗號。同樣地, getAddress()和getName()從記錄存儲中取回 name/address字段。

持久數(shù)據(jù)和記錄管理系統(tǒng)( Record Management System,簡稱 RMS

MIDP提供在移動設(shè)備上存儲持久數(shù)據(jù)的支持,并且 MID簡表還特意規(guī)定兼容的移動設(shè)備必須提供至少 8KB的非動態(tài)內(nèi)存用于數(shù)據(jù)存儲的用途,時式上,大多數(shù)的 MIDP Java設(shè)備提供的空間比這要求多得多。這就允許一個midlet充份利用應(yīng)用程序的持久數(shù)據(jù)。對于有 Java 2標(biāo)準(zhǔn)版開發(fā)經(jīng)驗的開發(fā)者,應(yīng)該注意這種數(shù)據(jù)存儲能力與標(biāo)準(zhǔn)的 Java有區(qū)別。J2ME記錄管理系統(tǒng) ( RMS )允許數(shù)據(jù)流被儲存并且在一個記錄基礎(chǔ)上訪問數(shù)據(jù)。由應(yīng)用程序開發(fā)者把每個記錄解析到字段水平。RMS程序包內(nèi)部的接口支持一個應(yīng)用程序定義的基礎(chǔ)上的比較與檢索功能。

一、javax.microedition.rms程序包

通過 javax.microedition.rms包訪問 J2ME記錄管理系統(tǒng),這個包包括一個類, RecordStore,和好幾個有用的接口 (在下列表格中描述 ):

接口 描述
RecordComparator 一個接口,定義一個比較機制,比較兩個記錄(以一個實現(xiàn)定義的方式)看它們是否匹配或它們的相對排序次序是什么樣的。
RecordEnumeration 一個接口,一個雙向的紀(jì)錄模擬器
RecordFilter 一個接口,定義了一個過濾器用于檢查一個記錄,看其是否匹配 (基于一種應(yīng)用程序定義的標(biāo)準(zhǔn) )。
RecordListener 一個監(jiān)聽者接口,從一個記錄存儲器中接受記錄更改/添加/刪除事件。


這些接口對于實現(xiàn)自定義搜索和檢索功能很有用,這些接口中使用的最多的就是 RecordEnumeration。這個接口從 RecordStore.enumerateRecords()方法調(diào)用中返回并且被用于遍歷一組從記錄存儲器中返回的記錄。它包含 nextRecord()、 previousRecord()、 numRecords()和 hasNextElement()等方法。

二、使用RecordStore類訪問記錄存儲

RecordStore類是開發(fā)者開發(fā)基層 RMS的接口,記錄儲存是在一個平臺--midlet環(huán)境依賴的方式--上創(chuàng)建的。信息的實際的位置和存儲細(xì)節(jié)應(yīng)用程序開發(fā)者其實并不知道,記錄存儲可以使用一種簡單的命名規(guī)則來訪問:名稱最多可以到32個Unicode字符長度,區(qū)分大小寫和必須在一個 midlet套件內(nèi)唯一。在一個 midlet套件內(nèi)的所有 midlet都有讀/寫一個記錄存儲的權(quán)限,只要它們知道正確的名稱。一旦這個 midlet套件被從該設(shè)備上刪除,所有與這個套件關(guān)聯(lián)的記錄存儲也將被刪除。

比如說,為了打開一個名為 TestRecordSet的記錄存儲,你可以調(diào)用 RecordStore.openRecordStore()方法。這個方法使用兩個參數(shù):一個字符串,表示記錄存儲的名稱;一個布爾值,如果為真的話,就會在紀(jì)錄存儲不存在時創(chuàng)建一個。我們使下列方法調(diào)用創(chuàng)建新的 TestRecordSet記錄存儲:

RecordStore rs = null;

rs = RecordStore.openRecordStore("TestRecordSet", true);


記錄存儲被創(chuàng)建好后,我們可以通過調(diào)用 RecordStore.addRecord()方法來向這個記錄存儲添加數(shù)據(jù)。addRecord()接受三個參數(shù):

參數(shù) 描述
byte[] data 一個儲存在記錄中的字節(jié)數(shù)據(jù)數(shù)組,通過 java.io.ByteArrayOutputStream和 java.io.DataOutputStream類把數(shù)據(jù)添加到這個字節(jié)數(shù)組。
int offset 進入這個記錄第一個關(guān)聯(lián)字節(jié)數(shù)據(jù)緩沖區(qū)的索引。
int numBytes 用于記錄的數(shù)據(jù)緩沖區(qū)的字節(jié)數(shù)

一旦成功完成 addRecord()調(diào)用 ,這個方法就返回一個整數(shù)指定這個記錄在記錄存儲中的標(biāo)識號。 RecordStore還規(guī)定另外一個數(shù)據(jù)編輯方法,包括 setRecord()和 deleteRecord(),但是我在例子中不會使用它們。

三、構(gòu)建一個用于J2ME設(shè)備的通訊錄

這個例子構(gòu)造一個基本的通訊錄應(yīng)用程序,使用它用戶就可以從一個移動設(shè)備上查看聯(lián)絡(luò)資料�,F(xiàn)在我只介紹從本地設(shè)備中存儲的數(shù)據(jù)中讀出相關(guān)的聯(lián)絡(luò)資料,在本文稍后的部分,你將看到如何使用J2ME網(wǎng)絡(luò)功能從一個 Web服務(wù)器取回數(shù)據(jù)文件!用戶將能查看一個地址列表和從這個列表選擇一個地址。為了實現(xiàn)這個目標(biāo),我們要創(chuàng)建兩個類,從用戶界面邏輯中把數(shù)據(jù)存取邏輯分開的: AddressDB類封裝所有的 RMS代碼; AddressBookMIDLet類封裝 GUI代碼。AddressDB類的代碼如下:

import javax.microedition.rms.*;import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.EOFException;

import java.io.IOException;

public class AddressDB {

private static RecordStore rs = null;

public AddressDB() {

try {

rs = RecordStore.openRecordStore("addressbook", true);

}

catch (RecordStoreException e) {

System.out.println(e);

e.printStackTrace();

}

}

public void addAddress(String Name, String Address) {

ByteArrayOutputStream os = new ByteArrayOutputStream();

DataOutputStream output = new DataOutputStream(os);

try {

output.writeUTF(Name "," Address);

}

catch (IOException e) {

System.out.println(e);

e.printStackTrace();

}

byte[] b = os.toByteArray();

try {

rs.addRecord(b, 0, b.length);

}

catch (RecordStoreException e) {

System.out.println(e);

e.printStackTrace();

}

}

public static String getName(int index) {

int counter = 1;

int commalocation = 0;

String name = null;

try {

RecordEnumeration enumRec =

rs.enumerateRecords(null, null, false);

while ((counter <= index) && (enumRec.hasNextElement())) {

String strTemp = new String(enumRec.nextRecord());

commalocation = strTemp.indexOf(',');

name = strTemp.substring(2, commalocation);

counter ;

}

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return name;

}

public static String getAddress(int index) {

int counter = 1;

int commalocation = 0;

String address = null;

try {

RecordEnumeration enumRec =

rs.enumerateRecords(null, null, false);

while ((counter <= index) && (enumRec.hasNextElement())) {

String strTemp = new String(enumRec.nextRecord());

commalocation = strTemp.indexOf(',');

address = strTemp.substring(commalocation 1);

counter ;

}

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return address;

}

public static int recordCount() {

int count = 0;

try {

count = rs.getNumRecords();

}

catch (Exception e) {

System.out.println(e);

e.printStackTrace();

}

return count;

}

}



AddressDB類包含好幾個 public訪問方法,它們都對來自外部調(diào)用者的訪問隱藏記錄存儲的細(xì)節(jié)。AddressDB()構(gòu)造程序調(diào)用 RecordStore.openRecordStore(),正如前面討論的那樣。我也創(chuàng)建了四個助手方法用于訪問基層記錄存儲: recordCount()、 getAddress()、 getName()和 addAddress()。注意,在本例子中addAddress()方法只是在 name/address字段之間放了一個逗號。同樣地, getAddress()和getName()從記錄存儲中取回 name/address字段。

  

分享:J2ME基礎(chǔ)知識
一、J2ME中需要的Java基礎(chǔ)知識 現(xiàn)在有大部分人,都是從零開始學(xué)J2ME的,學(xué)習(xí)J2ME的時候,總是從Java基礎(chǔ)開始學(xué)習(xí),而且現(xiàn)在講Java基礎(chǔ)的書籍中都是以J2SE來講基礎(chǔ),這就給學(xué)習(xí)造成

來源:模板無憂//所屬分類:JSP教程/更新時間:2008-08-22
相關(guān)JSP教程