- - PR -
ブラウザリロード時のgetParameter無効方法
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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 |
|
投稿日時: 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)に埋め込む という下準備を行っておいて、(更新系)アクセスが行われた際にカウンタの一致チェックを行う……といいようです。 |
|
投稿日時: 2004-03-27 21:54
javascriptでReloadを禁止してしまうという手もあります。
|
|
投稿日時: 2004-03-28 01:15
もう1つの回避策としては更新後のページの表示を forward ではなく redirect にすることですね。
|
|
投稿日時: 2004-03-29 13:27
皆さんレスありがとうございます!
アドバイスを参考に早速試してみたいと思います。 |
1
