- PR -

アプレットからサーブレットへの通信

投稿者投稿内容
GONZO
会議室デビュー日: 2007/02/19
投稿数: 4
投稿日時: 2007-02-25 20:29
先日の続きなのですが、
今現在、URLConnectionを使用しようと考えております。
送信側では
--------------------------------------
String s = t1.getText();
URL url = new URL("http://localhost/xxxx/servlet/xxxx");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);

ObjectOutputStream ObjOut = new ObjectOutputStream(conn.getOutputStream());
ObjOut.writeObject(s);
ObjOut.close();
--------------------------------------

このようにし、受け取る側のサーブレットでは、
--------------------------------------
InputStream in = request.getInputStream();
ObjectInputStream ObjIn = new ObjectInputStream(in);
String s = (String)ObjIn.readObject();
--------------------------------------
のようにしているのですが、
この2行目で例外が発生しているのですが、
その理由がわかりません。
どなたか分かる方がいらっしゃいましたら、お手数ですがご教授お願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-25 21:10
どんな例外が発生しているのでしょう?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-25 23:04
HTTPのGETパラメータとして送信した情報および、
GET・POSTで送信したHTMLのFORMタグ内のINPUTタグの情報は、
ServletRequest.getParameter
を用いて取得するのが通常です。

URLConnectionを使っていようが、ブラウザから送信されようが、
ちゃんとしたHTTPのリクエストであれば同じように処理できます。
ですから、通常のサーブレットのサンプルを元にパラメータを取得しましょう。

もし、ObjectOutputStream / ObjectInputStreamでJavaのオブジェクト送受信を
したいと考えているのであれば、まずこの二つのStreamで単純にFileに書き出して
読み出すという実証コードを書いて正常に動かせることを確認しましょう。

HTTPで通信する場合、バイナリデータを送る場合には面倒があります。
HTTPでHTMLの<INPUT type="file">でのデータ送信の仕様を確認してください。
まともにバイナリデータを送るのが面倒であれば、バイナリデータを
テキストで表現して送信→受け取ったサーブレットで逆変換
といったことをするなど工夫します。

まとめると、
1.まずサーブレットの基礎を復習
2.ObjectOutputStream / ObjectInputStreamの動作を確認する
3.HTTPでバイナリデータを送信するための方法を考える
といった項目に分離して、問題解決を試みましょう。

スキルアップ/キャリアアップ(JOB@IT)