- PR -

クリップボードの内容をサーブレットで受け取るには

1
投稿者投稿内容
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2003-11-30 15:54
初投稿です。みなさんよろしくお願いします。
知識が浅い為とんでもない質問になるかもしれませんが、その際はご容赦ください。

現在、電子印鑑ソフトで作成した判の画像データをサーブレットで受け取りたいと考えています。
想定している印鑑ソフトは判を一旦クリップボードに転送してから捺印するタイプです。
↓これ
http://hp.vector.co.jp/authors/VA002875/stampin/stampin.htm

アプローチとしてはアップレットでクリップボードのデータをjavax.imageio.ImageIOでファイルに保存した後、サーブレット側ではJakarta-CommonsのFileUploadを使って受け取ろうと考えていました。
色々調べたのですが、このときのアップロードフォームの書き方としては
<form action="/foo/uploader" method="POST" enctype="multipart/form-data">
ファイル:<input type="file" name="stamp"><br>
<input type="submit" value="実行">
<input type="reset" value="リセット"><br>
</form>
と書くしかなさそうです。
これですとユーザにファイル選択の操作をさせなければなりませんが、アプレットで一意に書き出したファイルをそのまま送信したいと考えています。
type="hidden"でファイルを指定できればできそうなのですが・・・。

何か他のアプローチで解決できないものでしょうか?
アドバイスお願い致します。
win-win
常連さん
会議室デビュー日: 2003/03/23
投稿数: 49
投稿日時: 2003-11-30 18:49
Applet-Servlet間通信ではダメですかねぇ。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2003-11-30 19:49
win-winさん回答ありがとうございます。

Applet-Servlet間通信なんてのがあるんですね。
勉強になります。
この方法だと判の画像データ以外のテキスト項目もアプレットで受け付けるということになるんですよね。
少し調べてみたんですが、セッション管理なんかも実装する必要がありそうです。
Applet-Servlet間通信をもう少し調べてみようと思いますが、出来れば入力の受付画面はHTMLのフォームで実現したいと思っています。

他に解決策はありませんでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-12-01 10:11
>HTMLのフォームで実現したいと思っています。
フォームで実現するってことは Servlet も Applet も関係なくなりますよね。要件としては "JavaScript でクリップボードの値を拾えるか" という点になってくるのではないでしょうか?
少なくとも IE ではできたはずです。JavaScript でクリップボードの値をとってきて、Hidden フィールドに書き込めばいいのではないでしょうか?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-12-01 10:37
unibon です。こんにちわ。

#あまり直接の回答ではありませんが。

Java から扱えるクリップボードには、
システムクリップボードとローカルクリップボードの2種類があります。
http://black.sakura.ne.jp/~third/system/java/Gjava56.html
などに解説があります。

引用:

でゅうくさんの書き込み (2003-11-30 15:54) より:
想定している印鑑ソフトは判を一旦クリップボードに転送してから捺印するタイプです。


Windows のアプリケーションと Java の間でやりとりするためには、
システムクリップボードを使う必要がありますが、
Java Applet だとセキュリティの制約があり、
デフォルトだとアクセスが制限されています。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/spec/security-spec.doc3.html#20327
のような設定で許可することができたと思いますが、
この設定をクライアントごとにおこなったり、
署名付きアプレットにするなどの対処が必要になってきますので、
多少面倒かもしれません。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2003-12-01 11:26
インギさん、unibonさん回答ありがとうございます。

引用:

JavaScript でクリップボードの値をとってきて、Hidden フィールドに書き込めばいいのではないでしょうか?


なるほどJavaScriptでそんなことも出来るのですね。
JavaScriptはまったく知らないので気付きもしませんでした。
やり方を調べてみます。

引用:

Windows のアプリケーションと Java の間でやりとりするためには、
システムクリップボードを使う必要がありますが、
Java Applet だとセキュリティの制約があり、
デフォルトだとアクセスが制限されています。


そうなんですよね。
セキュリティーのこと知らずにクリップボードの内容表示するだけのアプレットを作ったのですが、そのときに動作しなくて初めて知りました。
今はポリシーファイルを設定してデモ版を動かしています。

解決の糸口が解り、大変助かりました。ありがとうございました。
1

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