Apdesigner プログラマーズガイド
目次 索引 前ページ次ページ

第2部 アプリケーション開発編> 第5章 アプレットを開発する> 5.4 サーブレットと連携するアプレットを開発する

5.4.3 サーブレットと直接連携する

アプレットから直接サーブレットを呼び出す方法を説明します。

+アプレットからサーブレットの呼出し

サーブレットと直接連携する場合、ADServletConnectionクラスを使用します。

ADServletConnection servletConn = new ADServletConnection(
      new URL(getDocumentBase(), "servletname"));

サーブレットに送信するパラメタは、java.util.Hashtableクラスに格納して、callServlet()メソッドで、サーブレットを起動します。
結果をjava.util.Hashtableクラスで受け取ります。

// Hashtableを作成し、パラメタ"ID"を追加します。
Hashtable param = new Hashtable();
param.put("ID", "s123");
// サーブレットを実行し、結果を現在のウィンドウに表示します。
Hashtable result = servletConn.callServlet(param);
// 結果から"code"、"name"の2つのデータを取り出します。
String code = (String)result.get("code");
String name = (String)result.get("name");

+サーブレットの作成

アプレットとサーブレットを直接連携させる場合は、サーブレットの出力をHTMLではなくテキスト形式にします。結果のテキストは、"パラメタ名=値"の形式で出力します。例を以下に示します。

code=ABC1234
name=Sato

Apworksでサーブレットを作成する場合は、実装するメソッドとして"service"を選択します。次に、生成後のパラメータクラスを以下のように修正します。

public void setRequest(HttpServletRequest req) throws Exception {
    _req = req;

    // ここから修正します。

    /* 自動生成するソースをコメントアウトします。
    //{{SRVWIZ_GENERATE(DATAINIT)
    if ((text1 = getParameter("text1")) == null) {
        text1 = "";
    }
    if ((text2 = getParameter("text2")) == null) {
        text2 = "";
    }
    //{{SRVWIZ_GENERATE
    */

    // リクエストからパラメタを取り出します。
    ObjectInputStream ois = new ObjectInputStream(req.getInputStream());
    Hashtable param = (Hashtable)ois.readObject();
    ois.close();

    // 個々のパラメタを取得します。
    // これは一例です。実際のパラメタに合わせて修正します。
    if ((text1 = (String)param.get("text1")) == null) {
        text1 = "";
    }
    if ((text2 = (String)param.get("text2")) == null) {
        text2 = "";
    }

    // ここまで修正します。
}

+ほかのサーブレットとの連携

Apworks以外で開発されたサーブレットは、サーブレットに送信するパラメタやサーブレットから受信するデータに独自の形式を使用している場合があります。このようなサーブレットと連携する場合は、ADServletConnectionの基本メソッドを使用します。

ADServletConnection servletConn = ADServletConnection(
      new URL(getDocumentBase(), "servletname"));
// サーブレットに接続します。
servletConn.connect();
// コマンドを送信します。
servletConn.sendCommand(commandBytes);
// データを受信するストリームを取得します。
InputStream stream = servletConn.getResponse();
// データを受信します。
result = stream.read();
...
// ストリームのクローズを行います。
stream.close();
// 接続解除します。
servletConn.close();

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1998-2006