- 締切済み
サーブレットによるpostデータ送信について
久しぶりにJAVAをいじり始めたのですが、早速かべにぶつかってしまいました。 あるサイトの問合せフォームは必須項目を入力し、確認ボタンを押すと 確認画面になり、送信を押すと確定されます。(いづれもpostでパラメータが連携される。) このときにサーブレットからパラメータ値を確認画面のURLに連携し、さらに送信ボタンを押させるところも パラメータ値を連携することで対応させたいです。 たまたま画面イメージとしては https://www.janpara.co.jp/buy/assessment/ の画面のようなものを想定しております。(実際は違う画面ですが、似たものを探してきました。) 必須項目入力後、確認画面に遷移し、登録ボタンを押すことで確定する。 以下のソースを参考にしたのですが、うまくいきません。 http://www.atmarkit.co.jp/fjava/javatips/069java006.html どのように http://www.atmarkit.co.jp/fjava/javatips/069java006.html のソースに手を加えればよいのでしょうか? おおざっぱにでも構いませんので、ご教授下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ProKaseifu
- ベストアンサー率51% (98/192)
このサンプルはサーバーから指定したURLへデータをPOSTしているだけなので、質問者さんの意図したような。 入力画面に入力したデータをサーバー側で受け取るようなことはできません。(POSTしてその内容を標準出力しただけでプログラムが終了している) もし、質問者さんがやりたいようなことをするのであればAPサーバー上にjavax.servlet.http.HttpServletクラスを継承したクラスを作成し、doPostメソッド内で入力画面からのデータを受け取り、確認画面に画面遷移(同時に受け取ったデータを送信)といったことをする必要があります。 サーブレットについて基本的なことが理解されていないように思えます。 参考サイト http://www.javadrive.jp/servlet/index.html
- sh_hirose
- ベストアンサー率66% (56/84)
http://www.atmarkit.co.jp/fjava/javatips/069java006.html のソースはJavaからGET、POSTを行うサンプルです。 画面の作成等を行うには http://www.javaroad.jp/servletjsp/sj_servlet1.htm http://www.javaroad.jp/servletjsp/sj_jsp1.htm を参考にしてください。
補足
回答ありがとうございます。 まさにJavaからPOSTを行おうとしています。 詳細は下の方の質問で補足説明しています。 よろしくお願いいたします。
- ProKaseifu
- ベストアンサー率51% (98/192)
どのあたりが「うまくいきません」なのでしょうか? 1.サンプルが実行できない。 2.サンプルは実行できたが、サンプルを元に自作したプログラムの実行結果が正しくない。 3.それ以外
補足
2番です。説明不足で失礼いたしました。試しに https://www.janpara.co.jp/buy/assessment/ のサイトの必須項目(メーカー名、商品名、状態、詳細、名前、電話番号)をjavaからpost送信し、 結果として確認画面を受信できるようにしたいです。 以下のように修正してみましたが、確認画面でなく、もとの入力画面を結果として受け取っています。 import (省略) public class WWWGet { public static void getWWW() { String urlString = "https://www.janpara.co.jp/buy/assessment/confirm/"; //アドレスを変更しています try { URL url = new URL(urlString); URLConnection uc = url.openConnection(); uc.setDoOutput(true);//POST可能にする uc.setRequestProperty("User-Agent", "@IT java-tips URLConnection");// ヘッダを設定。どう設定していいのか分からないので元のまま uc.setRequestProperty("Accept-Language", "ja");// ヘッダを設定 OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得 String postStr = "REQUEST=confirm&INP_MKRNAME[1]=1&INP_ITMNAME[1]=2&INP_CONDITION[1]=0&NAME=a&TEL=08012345678&SHPCODE=1";//POSTするデータ 必須項目の設定 入力画面のform部分のソースから拾いました。[]のところは怪しい… PrintStream ps = new PrintStream(os); ps.print(postStr);//データをPOSTする ps.close(); InputStream is = uc.getInputStream();//POSTした結果を取得 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));//文字コード変換しています。 String s; while ((s = reader.readLine()) != null) { System.out.println(s); } reader.close(); } catch (MalformedURLException e) { System.err.println("Invalid URL format: " + urlString); System.exit(-1); } catch (IOException e) { System.err.println("Can't connect to " + urlString); System.exit(-1); } } } きっと初歩的な間違いだと思いますが、よろしければご教授下さい。
補足
質問内容がよくなかったようです。 >入力画面に入力したデータをサーバー側で受け取るようなことはできません。 この部分についてはすでにプログラムを作成し、問題なく動作することを確認しております。 >このサンプルはサーバーから指定したURLへデータをPOSTしているだけ この部分で指定したURLへデータがうまくPOST連携されず困っておりました。 非常に分かり辛い質問のお相手をして頂き、ありがとうございました。 質問のしかたを考え直します。