首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 與 ASP 實現資料庫互連:HttpConnection 端到端完整範例

     編輯:J2ME

架構原理

MIDlet (Client)          HTTP/GET/POST           ASP (Server)           Access DB
+----------------+   -------------------->   +----------------+    +----------------+
| HttpConnection |                           | Request/Response|    | ADODB.Connection|
| GET/POST + URL |                           | QueryString     |    | Recordset       |
| InputStream    |                           | Response.Write  |    | SQL Insert/Select|
+----------------+                           +----------------+    +----------------+

MIDP 無 JDBC、無本地資料庫存取能力,透過 HTTP 協議 與伺服器端腳本 (ASP/PHP/JSP/Servlet) 交互,由伺服器代理資料庫操作,是 J2ME 連接企業資料的標準模式。

一、伺服器端環境佈署 (IIS + ASP + Access)

  1. 確認 IIS 運行正常 (https://localhost/ 可訪問)。
  2. 建立 Access 資料庫 D:\J2ME\J2METEST\IIS\DATABASE\J2MEtest.mdb,資料表 Message:
ID      : AutoNumber (Primary Key)
MESSAGE : Text (255)
IP      : Text (50)
DATE    : Date/Time

二、ASP 程式 ConnectASP.asp

<%@ LANGUAGE=VBScript %>
<%
' 1. 資料庫連線字串
strDBLocation = Server.MapPath("/database/J2METest.mdb")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strDBLocation

' 2. 開啟連線
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open strConn

' 3. 取得參數
ip = Request.ServerVariables("REMOTE_ADDR")
message = Request.QueryString("message")

' 4. 寫入資料
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = cnn
rs.CursorType = 1   ' adOpenKeyset
rs.LockType = 2     ' adLockOptimistic
rs.Source = "Message"
rs.Open
rs.AddNew
rs("Message") = message
rs("IP") = ip
rs("Date") = Now()
rs.Update

' 5. 關閉資源
rs.Close
cnn.Close

' 6. 回應客戶端
Response.Write "The message written successfully."
%>

測試 ASP

瀏覽器訪問:https://localhost/asp/ConnectASP.asp?message=Hello+J2ME! → 應顯示成功訊息,資料庫出現新記錄。

三、MIDlet 客戶端代碼

import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;

public class ConnectASPMidlet extends MIDlet {

    public void startApp() {
        try { testASP(); }
        catch (IOException e) { System.out.println("HTTP Error: " + e); }
        notifyDestroyed();
    }

    private void testASP() throws IOException {
        String url = "https://localhost/asp/ConnectASP.asp?message=Hello+J2ME!";
        HttpConnection conn = null;
        InputStream in = null;
        try {
            conn = (HttpConnection) Connector.open(url);
            conn.setRequestMethod(HttpConnection.GET);
            in = conn.openInputStream();

            int ch;
            StringBuffer sb = new StringBuffer();
            while ((ch = in.read()) != -1) {
                sb.append((char) ch);
            }
            System.out.println("Server Response: " + sb.toString());
        } catch (ConnectionNotFoundException e) {
            System.out.println("HTTP connection failed: " + e);
        } finally {
            if (in != null) try { in.close(); } catch (IOException ignore) {}
            if (conn != null) try { conn.close(); } catch (IOException ignore) {}
        }
    }

    public void pauseApp() {}
    public void destroyApp(boolean unconditional) {}
}

四、進階實戰強化 (生產環境必備)

議題建議做法
參數編碼中文參數必須 URLEncoder.encode(str, "UTF-8") (J2ME 無內建,需自行實作或用 javax.microedition.io.HttpConnection 的 POST 傳遞 body)
POST 大量資料改用 conn.setRequestMethod(HttpConnection.POST),OutputStream out = conn.openOutputStream() 寫入 application/x-www-form-urlencoded 或 JSON
回應格式統一用 JSON (輕量、易解析),伺服端 Response.ContentType = "application/json; charset=UTF-8",客戶端用 org.json.me 解析
錯誤處理ASP 端 On Error Resume Next + 回傳 JSON {"code":500,"msg":"..."},MIDlet 依 code 判斷重試/提示
安全性HTTPS (MIDP 2.0+)、請求簽名 (HMAC-SHA1)、IP 白名單、SQL 參數化 (ASP 用 Command.Parameters)
效能優化連線池 (IIS 內建)、資料庫索引、分頁查詢、GZIP 壓縮回應 (MIDP 2.0 支援 Content-Encoding: gzip)
離線同步本地 RMS 佇列操作,有網時批次同步至伺服器

五、完整專案結構建議

/MyJ2MEApp
  /src
    ConnectASPMidlet.java
    HttpUtil.java          // 封裝 GET/POST/JSON 解析/錯誤處理
    Config.java            // 伺服器基礎 URL、超時、重試參數
  /server
    /asp
      ConnectASP.asp
      Common.asp           // 連線字串、錯誤處理、JSON 輸出工具函式
    /database
      J2MEtest.mdb
  build.xml                // Ant + ProGuard + Polish 自動化建構
  jad.template             // JAD 模板 (版本號、MIDlet-Name 等佔位符)

結語

J2ME 透過 HttpConnection 與 ASP (或任何 HTTP 後端) 互連,是「瘦客戶端 + 胖伺服器」架構在行動裝置上的經典落地。掌握「GET/POST 選擇、參數編碼、JSON 協議、異常重試、HTTPS 安全」五大核心,即可構建穩健、可擴展的行動資料應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved