• ベストアンサー

「最新の情報に更新」でリクエスト送信したくない

JSP + Servlet + JavaScriptでwebアプリを作っています。 フォームに値を入力して、リクエストをPOST送信したあとに、 ブラウザ(IE)の「最新の情報に更新」を押すと、もう一度POSTしてしまいます。 「最新の情報に更新」を押したときはリクエストを送信せず、 送信ボタンを押した場合のみリクエストを送信するには、 どのようにしたらよいでしょうか? セッションのスコープをを変えればよいのか、 JavaScriptやHTMLで対応できるのか、 よく分からないでいます・・・。 宜しくお願いします。

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

  • ベストアンサー
  • oka5130
  • ベストアンサー率66% (35/53)
回答No.1

ブラウザのボタンを制御するのは無理があるのではないでしょうか。 Webアプリケーションでは一般的に、POSTリクエストの後にリダイレクトするようにします。 そうしておけば「最新の情報に更新」を押した時に発行されるリクエストはGETになるので、 もう一度POSTされる心配はありません。

ijhnb6543f
質問者

お礼

oka5130様、こんばんは。 やはりブラウザまでは制御できないのですね・・・。 フィルターを作って、リクエスト時のメソッドを取得したみたのですが、 「最新の情報を取得する」によるリクエストは、 GETのときもあるし、POSTのときもありました。 私が作っているwebアプリは、POSTを受けたときにフォワードしています。 リダイレクトに変えたり、ヘッダ情報で差異を見つけてフィルタしたり、 もう少しいろいろ試してみます。 ありがとうございました☆

関連するQ&A

  • サーブレットのパラメタ変更

    例えば、 - a.html - <form method="post" action="/Servlet1"> <input type="text" name="animal" size="12"> <input type="submit" value="送信"> </form> というHTML文がありanimalのテキスト内容がcatとしてServlet1へリクエストしたとします。 Servlet1ではgetParameter("animal")でcatを取得できます。そこで次のページをレスポンスするべく、 getServletContext().getRequestDispatcher("Jsp1.jsp").forward( request, response ); という形でJsp1.jspへフォワードします。Jsp1.jspでもrequest.getParameter("animal");とすると catという値が取得できると思うのですが、これをServlet1でanimalがcatならdogというようにパラメータの値を変更することはできますでしょうか? 初歩的な質問かと思いますが、何卒、宜しくお願いいたします。

    • ベストアンサー
    • Java
  • サーブレットが起動しない

    HTMLのSubmitボタンを押すと、Sample_Servletにリクエストが 送信されます。そして、JSPを表示します。 その後、JSPのSubmitボタンを押すと 何もかわりません。Servletにリクエストが わたってないのだと思います。 <FORM ACTION ="sample.Sample_Servlet" METHOD = "POST"> ・・・ <INPUT TYPE = "submit" NAME="btn" VALUE ="btn"> としているのですが、、、、 何か心当たりがありましたらお願いします。

    • ベストアンサー
    • Java
  • カスタムタグを使用してリクエストスコープから値を取得する方法

    カスタムタグを使用してリクエストスコープから値を取得する方法 質問させてください。 JSPで、リクエストスコープから取得した値をカスタムタグの属性に保存したいと思います。 NET等でやり方を調べたのですが、いまいちわかりませんでした。 カスタムタグの属性に値を設定すること、属性から値を取得することはできたのですが、これにリクエストスコープが絡むとどうすればいいのかわかりません。(リクエストスコープそのものが良くわかってないからだと思うのですが) 具体的なやり方や、参考になるサイトを教えていただけるとうれしいです。 お知恵をお貸しください。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • javascript 選択した値のみを送信する方法

    現在、jspとservlet、javascriptで座席登録のシステムを作っているのですが。 たとえば、jsp上で、 □□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□ と座席が表示されていた場合に、 押した座席の値をservletに送るという機能を作りたいのですが、 どうやって実装したらいいのかが、思いつきません。 座席は、データベースから値を受け取り、forでまわして表示しています。 選択した座席の値のみを送信したいのですが、どうやって実装したらいいと思いますか?

  • ブラウザを右クリックし最新の情報に更新をされたとき

    いつもお世話になっております。 Web系開発一ヶ月くらいの初心者です。 ・ASP.net(vb)で開発を行っています。  ブラウザの戻るボタンや更新ボタンは使えないようにしているの  ですが、ブラウザ上で右クリックを選択し最新の情報に更新を  選択すると、前回画面に入力し登録ボタンを押下する処理が  走りデータがまた新たに登録されてしまいます。  この、ブラウザの右クリックから最新の情報へ更新を選択された  場合にまた登録処理が走るのを回避する方法はあるのでしょうか?    session変数等を利用してというサイトは見つけたのですが、  開発規約でsession変数を使用しないとなっています。    どなたかわかる方がおられたらアドバイスをお願いいたします。

  • JSPからServletへの値の引渡し

    JSPからServletへパラメータを渡そうとしています。 JSP同士のやり取りのようにrequest.getParameter でやろうとするとNullPointerExceptionが出てしまいます。 ひょっとして私って何も分かってないのかも…。 JSPで、 <input type=hidden name="nickname" value="pinky"> として渡すべき値を設定しました。 そして、PostでServletを呼び出します。 呼び出されたServlet側で、この"nickname"を受け取りたいのです。 必要な情報があれば仰って下さい。補足致します。 よろしくお願いします。

    • ベストアンサー
    • Java
  • リンクの値→サーブレット

    いつもお世話になっております。 今回もよろしくお願いいたします。 (1)jsp画面のリンクの値をServletへおくる (2)ServletでDBアクセスし、処理を行う (3)(2)で処理した値をBeanに格納する (4)jsp画面でBeanの値を取得する といった流れをしています。 [(1)のjspでのコード(一部)] <form name= henkou method="post" action="../servlet/RequestServSession"> <a href= "../henkou.jsp"> <input type=hidden name=MySubmit> <jsp:getProperty name="reqObject" property="id" /> </a> </form> <script language="JavaScript"> function func(MyCommand){ document.henkou.MySubmit.value=MyCommand; document.henkou.submit(); } </script> [(2)Servletのコード(一部)] String strId = (String)request.getParameter("MySubmit"); String strSesId = new String(strId.getBytes("iso-8859-1"),("Shift_JIS")); int intId = (Integer.parseInt(strId));           ・           ・           ・ //処理された値をBeanに格納 HttpSession session = request.getSession(); *1→session.setAttribute("id",sid); *2→session.setAttribute("name",name); *3→session.setAttribute("biko",biko);           ・           ・           ・ などを実行すると、(4)では   *1→ 0   *2→ null   *3→ null が表示されます。 リンクの値がServletへきちんと送れていないのだと思い、jsp→Servletのみで実行したところ、 "Http-500エラー NullPointerException" が発生します。 どのようにしたらうまく値をおくることができるのでしょうか? どなたかご教授のほどよろしくお願いいたします。 

    • ベストアンサー
    • Java
  • Java(Servlet,JSP)を使用してあるURLにHTTPリクエスト(POST)を送信する方法

    あるWeb APIを使用したWEBアプリケーションを作成しています. JavaのServletやJSPで実装していますが,サンプルではGETでリクエストを送る方法だけが紹介されていました. APIがPOSTに対応しているので,POSTでリクエストを送信しようと思います. サンプルは以下のようになっていましたが,POSTでリクエストを送信する場合,どう変更すれば良いでしょうか? URL url = new URL("http://xxxxxx.xx/xx/?q=" + URLEncoder.encode(request.getParameter("data"), "UTF-8")); URLConnection con = url.openConnection(); InputStream stream = con.getInputStream(); リクエストは日本語を含むデータをパラメータに含める予定です.

    • ベストアンサー
    • Java
  • スコープの応用

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1508969 の応用としてなんですが、とくに、セッションスコープやリクエストスコープ、ページスコープなどを使用して、HTMLやCSSのコードから独立したJavaScriptであれば、同じ処理をPHPでもできるんではないかと思いました. もしかしたら、HTMLやCSSのコードから独立してないJavaScriptに対してもPHPで同じ処理に置き換えることができるとも思えますがいかがなものでしょうか?

    • ベストアンサー
    • PHP
  • サーブレットからJSPへ情報を渡す

    サーブレットからJSPへ情報を渡すことについて質問がございます。 ■質問は、ブラウザからサーブレットにリクエストして      モデルからデータを取り出しJSPがモデルを参照して      ブラウザに結果を表示し、ブラウザの画面のボタンを      クリックすると、またサーブレットにリクエストが      いくようにしたいのですが、      そのJSPから二度目のサーブレットへのリクエスト及び      リクエストする際にデータを渡すのですが、      JSPからサーブレットへ飛んでくれず404エラーがでます。      ★どうしたら、JSPからサーブレットへ飛んで       くれるでしょうか? ■簡単な流れでかきますと   リクエスト(hidden value="patu") ブラウザ  →  サーブレット  →  モデル ←→ テキスト           ↓           ↑(参照)   ブラウザ ← ← JSP →→→→→  上記の流れは一回の流れですが、次JSPからまたサーブレットへ  actionし、(hidden value="patu")をして同じ流れを  くりかえしたいのです。 ■JSPではどのようになっているかと申しますと <form action="http:://localhost:8080/sotu/TextServlet"method="POST"> <input type="image" src="NEXTquiz.gif" value="次の問題"     onclick="http://localhost:8080/sotu/TextServlet'"> <iuput type="hidden" name="patu" value="yonyc.getPatu()"> </form> となっております。 ■サーブレットでは protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {  String kye = request.getParameter("patu");//value受け取り MondaiSC mondaisc = new MondaiSC(); //モデルクラス生成  mondaisc . mondaisc.DefaultQuiz(kye, i); //モデルにキーを渡す ArrayList textList = mondaisc.getTextList();  //モデルクラスからテキストの情報が入っているArrayListを受ける り  HttpSession session =request.getSession();//sessionに入れる  session.setAttribute("text",textList);  RequestDispatcher rd =getServletContext().getRequestDispatcher("/yomi.jsp"); } このyomi.jspからまたサーブレットへ同じリクエストをおくりたいの です。  ところが飛んでくれません。  恐らく、JSPでの記述の仕方に問題があるのではないこと思っており ますが、どなたかアドバイスをお願い致します。  宜しくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう