- PR -

ブラウザリロード時のgetParameter無効方法

1
投稿者投稿内容
まきお
会議室デビュー日: 2004/03/27
投稿数: 11
お住まい・勤務地: Japan
投稿日時: 2004-03-27 14:53
はじめまして。
HTMLからの値をJSPで受け取り、セッション保存という
仕組みを用いてカゴにいれるという
ショッピングカート処理を作っています。

ここで問題が発生しました。下記の例ですと
HTML→JSPへの通常の処理では3個追加され問題ないのですが、
JSP表示後に、ブラウザのリロードを押すと、
再びrequest.getParameter("number")で3が取られてくる
ため、リロードするたびに6個、9個,12個‥と増えていきます。
リロードしたときにはrequest.getParameter("number")
がnullになってくれればいいのですが、
リロードを防ぐ、もしくはリロードしたという判定方法
はあるのでしょうか?

色々やっていますが行き詰まってきたため
アドバイスの方、頂けたらと思います。
よろしくお願いします。

/////////////////////////////////////////////////////
//main.html(送信側)

<form name="form1" method="post" action="cart.jsp" >
<input type="text" name="number" value="3">個
<input type="submit" value="カゴにいれる">
</form>

/////////////////////////////////////////////////////
//cart.jsp(受信側)

//商品個数の取得
String getNumber = request.getParameter("number");

------------------------
開発環境
Tomcat 4.1.2.4
JSDK 1.4.2
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-03-27 16:47
(特に更新系の)Webアプリケーションでは、ブラウザの「back」「reload」は悩ましいところですね。……ということで、FAQです。あちこちで似たような議論がされていますが、ここの掲示板内でも

件名:ブラウザの戻るボタンのイベント取得について。。http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6531&forum=7

等に同じ話題のスレッドがあります。参考になさって下さい。

なんとなーくで簡単に纏めると……

・セッション内にカウンターを保持しておき、アクセスの度にインクリメント
・各ページ生成時に(その時の)カウンタの値をhidden(/another parameter)に埋め込む

という下準備を行っておいて、(更新系)アクセスが行われた際にカウンタの一致チェックを行う……といいようです。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-03-27 21:54
javascriptでReloadを禁止してしまうという手もあります。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-28 01:15
もう1つの回避策としては更新後のページの表示を forward ではなく redirect にすることですね。
まきお
会議室デビュー日: 2004/03/27
投稿数: 11
お住まい・勤務地: Japan
投稿日時: 2004-03-29 13:27
皆さんレスありがとうございます!
アドバイスを参考に早速試してみたいと思います。
1

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