- PR -

ブラウザでのダブルクリック対応

1
投稿者投稿内容
koji
会議室デビュー日: 2003/01/19
投稿数: 2
投稿日時: 2004-04-08 16:09
現在業務でJava(Servlet+JSP)でWebアプリケーションを作成しているのです
が、
ブラウザからリンクやボタンが2度つづけてクリックされた場合の対処を
考えています。

ちなみに、JavaScriptは、今回の案件で使用しないことが決定しています。

よって、JavaScript以外での防御策を聞いてみたいと思い、投稿させていただきました。

環境
JDK:1.4.x
Tomcat:4.1.x
※Strustsを使用するか否かは検討中

Strustsの場合は、Transaction Tokenを使用するのが手遺跡だと思いますが、
排他制御とか厳密に考えるとちょっと引いてしまう・・・。

意見をお聞かせいただければありがたいです。
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2004-04-08 20:03
ブラウザ操作抑止はクライアント制御が必要であると思います。
そうしない場合、クリックの度にサーバに要求が送信されることとなり接続数(負荷)増加は免れません。
「JavaScriptは絶対駄目!」という訳でなければ、妥協してもらいたいところですね。

Servletのみで対処したいのであればセッション管理するしかないんじゃないでしょうか。
セッション管理については、この投稿が参考になるかと思います。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10321&forum=12&15
これで利用者を特定できます。

更に static 領域に利用者の要求を処理中か?というフラグを設けて、
一度要求を受けたら「利用者の要求処理中」とフラグを ON にする。
この処理が終わったら「利用者の要求待ち受け」とフラグを OFF にする。
このフラグを毎回確認すれば何とかなるんじゃないでしょうか?

ちなみに想像だけで書いているので、ちゃんと抑止できるか判りません。

---
追記:参照と編集が可能となる static 領域なので絶対に同期とることを忘れないで下さい。

[ メッセージ編集済み 編集者: SJ0392 編集日時 2004-04-08 20:40 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-04-09 00:29
tomcatの場合はSessionオブジェクトに対して同期をかけても
同一リクエストで別セッションになる可能性があり、
同期がかからない場合がありますので、
セッションID(String)のinternメソッドの戻り値に対して
同期をかけるようにすれば大丈夫です。

#tomcatの5では直っているのかな??
koji
大ベテラン
会議室デビュー日: 2002/12/25
投稿数: 100
投稿日時: 2004-04-15 16:09
まったく関係ない事で恐縮ですが、同じハンドル名を登録できないよう
にしてほしい、と思うのは私だけでしょうか。。。ハンドル名を変える
しかないですかね。
特にこのスレのように、皆さんが親切にレスしてくれているにもかかわ
らず放置してしまう人と同じハンドル名というのは。。。暴言すいませ
ん。今はレス出来ない状態なのかもしれませんね。
1

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