Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第5章 アプレットを開発する | > 5.4 サーブレットと連携するアプレットを開発する |
アプレットから直接サーブレットを呼び出す方法を説明します。
サーブレットと直接連携する場合、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();
目次 索引 |