- ベストアンサー
Applet-Servlet間通信
Applet-Servlet間通信で 文字を送れるのは確認していますが jpg画像ファイルを アプレット-サブレット間で送受信 は可能なのでしょうか? 参考サイトがありましたら 紹介ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
アプレット=サーブレット間でイメージをやり取りすることは可能です。 そのためには、入出力のストリーム関係と、BufferedImageの処理の基本がだいたい頭に入っていないといけませんが、そのあたりはだいたいわかりますか? 例として、アプレットからサーブレットにイメージを送信する場合を考えるとこんな感じの処理が必要になります。 ※アプレット側 // URLConnectionを取得し設定をする URL url = new url( サーブレットの指定 ); URLConnection con = url.openConnection(); con.setDoOutput(true); con.setRequestProperty("content-type","application/octed-stream"); // ImageWriterの取得 Imagewriter iw = (Imagewrier)ImageIO.getImageWritersByFormatName("jpeg").next(); // URLConnectionからOutputStreamを取得 OutputStream out = con.getOutputStream(); //OutputStreamをもとにImageOutputStreamを作成 ImageOutputStream imout=ImageIO.createImageOutputStream(out); // ImageWriterにImageOutputStreamを設定 iw.setOutput(imout); // Imageの書き出し iw.write( [書き出すBufferedImage] ); iw.flush(); ※サーブレット側 // responseの設定 response.setContentType("application/x-java-serialized-object"); // ServletInputStreamを取得 ServletInputStream input = request.getInputStream(); // ServletInputStreamからBufferedImageを読み込む BufferedImage img = ImageIO.read(input); ここにあげたのは基本的な処理の流れで、これだけでできるというわけではありません。(ストリーム操作は例外処理を用意しないといけませんし、受け取った後にレスポンス側に返事をする処理も必要でしょう)なお、基本的な考え方がわかれば、逆のサーブレットからアプレットへの送信もだいたいわかると思います。 ポイントは、ImageReader/ImageWriter、ImageInputStream/ImageOutputStream、それにImageIOクラスの使い方あたりでしょう。そのあたりが一通りわかれば、だいたいの流れはわかるかと。