• ベストアンサー

Applet-Servlet間通信

Applet-Servlet間通信で 文字を送れるのは確認していますが jpg画像ファイルを アプレット-サブレット間で送受信 は可能なのでしょうか? 参考サイトがありましたら 紹介ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.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クラスの使い方あたりでしょう。そのあたりが一通りわかれば、だいたいの流れはわかるかと。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • appletからのエクセルファイル動的生成

    ご覧頂ありがとうございます。 Java applet(Swingを使用)から テンプレートのExcelファイルを利用して 動的生成を考えています。 ネットで調べてみるとServletでの処理は書いてあるのですが appletからの制御の参考になるサイトが見つかりませんでした。 どなたかお知恵を貸してください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • ★Appletで画像読み込み&画像表示★

    import java.awt.*; import java.applet.*; public class S1 extends Applet { Image img; public void init() { img=getImage(getCodeBase(),"sample.jpeg"); } public void paint(Graphics g){ g.drawImage(img,50,50,this); } } 以上プログラムでアプレット上に拡張子がjpeg形式のsampleという100*100の画像を表示しようとしています。 クラス名はS1で問題なくエラーもありません。 java関連のサイトでも同じようにして画像が表示できるとされていたのですが、私のパソコンではアプレット上には何も表示されないまま、アプレットのみが起動するという状態になりました。 Eclipse SDKというものを使用していますが、それが原因なのかどうかもわからず困っています。 お手数をお掛けしますが、回答の程よろしくお願いします。

    • ベストアンサー
    • Java
  • Java APPLET

    教えてください、お願いします。 ここにソースを入れます。なので長文になりますが申し訳ありません。 “水面のようにjpg画像が揺れる”アプレットです。 ダウンロード先は http://www.durius.com/ ここです。 ダウンロードし、家でいくつか試しましたがどのサンプルも見られますので、写っても良いはずなのですが… ★ではアプレットソースだけはじめに入れます。 <APPLET archive="DuriusWaterPic.jar" WIDTH="400" HEIGHT="300" ALIGN="middle" CODE="DuriusWaterPic.class"> <PARAM NAME="cabbase" VALUE="DuriusWaterPic.cab"> <PARAM NAME="image" VALUE="http://kkpen.web.fc2.com/flower-preview.jpg"> <PARAM NAME="dim" VALUE="5"> <PARAM NAME="noise" VALUE="0"> <PARAM NAME="mouse" VALUE="7"> <PARAM NAME="timer" VALUE="0"> <PARAM NAME="target" VALUE="_blank"> <PARAM NAME="orientation" VALUE="v"> <PARAM NAME="bg" VALUE="233423"> <PARAM NAME="http://java.sun.com/products/javawebstart/apps/remoteApps.html./" VALUE="http://www.durius.com/ http://altavista.digital.com/ http://www.javaboutique.com/ http://www.davesclassics.com/"> <PARAM NAME="reg" VALUE="22454732"> </APPLET>

  • appletが見れない、IEの設定が原因でしょうか

     Win 7です、宜しくお願いします。    HTMLの中にappletコード(classファイル)を埋め込んでいます。  HTMLの編集内容をブラウザ(IE、Ver10)から確認しようとしても「セキュリティ設定によりアプリケ ーションがブロックされています」というダイヤログが出て見れません。  IEの設定は「ツール>インターネットオプション>セキュリティ>ローカルイントラネット>レベルの カスタマイズ>スクリプト>Javaアプレットのスクリプト>ダイヤログを表示する」にして、ダイヤログ が出るとブロックを解除していますが、うまく表示されません。  他にどこかの設定を変更してやる必要があるのでしょうか。  appletは正常に動いていることは確認済みです。  以上宜しくお願いします。

  • Window CE でJava appletは使えますか。

    お世話になっております。horagaiです。 Windows CEマシンでWebサイトにアクセスして Java appletを動かしたいのですが CE のIE(?)ではJava appletは動くのでしょうか? またもし動かない場合、動くようにするためのプラグイン(?)の ようなものはあるのでしょうか。 ちなみにそのアプレットはチャットのクライアントとして使うものです。 Windows 2000 のIEではちゃんと動くことは確認してあります。 私自身はCEを使っておらず、近くに使っている人もいないため CEのことは全くわからないのですが、CEしか持っていない人に 使ってもらいたいアプリがあるので質問させていただきました。 ちなみに彼のマシンはNEC Mobile Gear MC/550だそうです。 IEは多分最初からインストールされているものをそのまま 使っていると思います。

  • アプレットからサーバ側のプログラムを起動したいのですが…

    仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。 UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。 とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。 では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、 ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。 もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか?  とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら? ・webポートだけを開いて ・サーバ側のCプログラムを起動してその結果を受け取る ・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。 Applet+CGI? Applet+Servlet? RMI? JNI…? 助けてください…(TT)

    • ベストアンサー
    • Java
  • テキストファイルの中身をAppletに常に表示

    お世話になります。 先日、Appletでの外部ファイルを常に同期させる方法をお尋ねしたものです。 それにより、Servletを併用し試行錯誤していたのですが、どうしても行き詰まり再度質問させて頂きました。 Applet内にあるスレッドから常にServletを呼び出し、 Servlet側では呼び出される度にサーバ上にある外部ファイルを読み込み、 その内容をAppletへ送信してAppletではその受け取ったデータを表示する というプログラムを組んでみたのですが、 外部ファイルの中身は表示はされず、コンソールにはIllegalStateExceptionが表示されます。 エラー内容を検索したりもしてみたんですが、うまく理解出来ませんでした。 以下にソースを載せておきますので、もしよろしければご教授お願いします。 ※Servlet側 package com.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; DataOutputStream dos; String test=null; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String checkFile="test.log"; String fn=getServletContext().getRealPath(checkFile); response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=response.getWriter(); out.println("<html><head></head><body>"); out.println("<applet codebase=\"http://localhost:8080/Test\" code=\"TestApplet.class\" height=\"600\" width=\"800\">"); out.println("</applet>"); out.println("</body></html>"); out.close(); BufferedReader inn = new BufferedReader(new FileReader(fn)); //アプレットへの送信 response.setContentType("application/octet-stream"); dos=new DataOutputStream(response.getOutputStream()); String outPut=inn.readLine(); dos.writeUTF(outPut); dos.flush(); dos.close(); } } ※Applet側 import java.applet.Applet; import java.awt.*; import java.io.*; import java.net.URL; import java.net.URLConnection; public class TestApplet extends Applet implements Runnable{ String inPut; Label l1; public void init() { setSize(200, 100); setLayout(new FlowLayout()); l1 = new Label("Wait"); add(l1); Thread wait; wait = new Thread(this); wait.start(); } @Override public void run() { // TODO Auto-generated method stub try { while(true){ try { //サーブレットへの通信 URL url=new URL(getDocumentBase(),"./Test"); URLConnection conn = url.openConnection(); //play.logの状態取得 DataInputStream in = new DataInputStream(conn.getInputStream()); l1.setText(in.readUTF()); } catch(Exception e) { } Thread.sleep(1000); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • servletについて

    現在、こちらのサイトにてJava/サーブレットの学習をしています。 http://www.javadrive.jp/servlet/schedule/ スケジュールの登録処理がうまくできません。 登録ボタンを押すと、意図したとおりにスケジュール一覧画面に 戻るので動きは間違っていなく、Exception等も発生していません。 MySQLや文字コードはUTF-8で統一しています。 コードはコピペを行っているので打ち間違いはないはずです。 他にどこを確認すると良いのでしょうか。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • Java
  • パケット通信料について

    請求予定金額を見ると、思ってた以上にパケット通信料がかかってるのですが、 普段、サイトなどは見ることが無く、開くといってもドコモのメール設定や料金確認だけです。それは無料ですよね? 他にはデコメールや画像を送受信する事はたまにあります。 それだけで4000円ほどかかってるのですが、多くないですか?