getParameterの制限?

このQ&Aのポイント
  • JavaでHTMLの情報を取得する際に、getParameterメソッドの制限について悩んでいます。
  • forループを使用して1から9までの情報は取得できますが、10以上の情報を取得することができません。
  • どうすれば10以上の情報も取得できるようになるのでしょうか?
回答を見る
  • ベストアンサー

getParameterの制限?

昨日から悩んでます。 どうしても今日中にあげなければならないので、 お力を貸してください!! <INPUT name="name1" type="text"> <INPUT name="name2" type="text"> <INPUT name="name3" type="text"> : : <INPUT name="name10" type="text"> <INPUT name="name11" type="text"> というHTMLの情報を取得したいのですが、 今、Javaで下のように書いています。 for ( int j = 1; j <= 11; j++ ) { str = new String( req.getParameter("name" + j).getBytes("8859_1"), "EUC_JP" ); } こうすると1~9までは取得できるのですが、10の取得で止まってしまいます。 二桁になるとダメなのでしょうか? ちなみに "name" + j を "name10" としてもダメでした。

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

form の method を get にしていませんか? post で試してみてはいかが。 servlet コンテナに何を使っているか、知りませんが、まずは、そのログを 見ましょう。

yuki_x
質問者

お礼

form の method は get にしていました。 post で試したところ、↓エラーになってしまいました。 Apache Tomcat/4.0.3 - HTTP Status 400 - HTTP の POST メソッドはこの URL ではサポートされていません。 post は使えないということでしょうか? ----- と、補足 に ここまで書いて気が付きました。 method=post には doPost() が必要なんですね。 この画面は method=get > doGet で遷移してきた画面なので、 そのまま、そこ(doGet() 内)に type分けして記述していました。 ↑全然わかりにくい文章でごめんなさい。 でも、とりあえず、質問の件は解決しました。 本当にありがとうございます。 これで気持ちが軽くなりました!!!

関連するQ&A

  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>入力ページ</title> </head> <body> <p>-- 入力ページ --</p> <p><form action="test2.jsp"> ID: <input type="text" name="uid" size10><br> お名前: <input type="text" name="name" size=32><br> 生年月日: <input type="text" name="money" size=20><br> <br> <input type="submit" value="OK"> </form></p> </body> </html> ------------------------------------------------------- test2.jsp <%@ page contentType="text/html; charset=euc-jp" %> <% // ユーザーからの入力を出力する // パラメータを取得 String uid = request.getParameter("uid"); String name = request.getParameter("name"); String money = request.getParameter("money"); // 文字コードの変換 //uid = new String(uid.getBytes("8859_1"), "EUC_JP"); name = new String(name.getBytes("8859_1"), "EUC_JP"); money = new String(money.getBytes("8859_1"), "EUC_JP"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>ユーザーからの入力を出力する</title></head> <body> <p>-- ユーザーからの入力を出力する --</p> <p><ul> <li>ID: <%= uid %> <li>お名前: <%= name %> <li>生年月日: <%= money %> </ul></p> </body> </html> htmlの入力フォームからjspを呼んで表示させるだけなのですが、入力して「OK」をおすと You don't have permission to access /~.........../test2.jsp on this server. と出るのですが、何が原因なのでしょう。教えてください。

  • 子ウィンドウでの情報の取得

    こんにちは!yuki_x です。 お世話になっています。 またまたJava(JavaScript?)で質問です。よろしくお願いします。 既に開いているウィンドウから子ウィンドウを起動する以下のような処理を考えています。 <SCRIPT LANGUAGE='JavaScript'> <!-- function subwinOpen() { window.open("pg_detail?type=0&details=" + "タイトル,名前,2002,10,住所," +", "sub", "menubar=no") ; } //--> </SCRIPT> <FORM action="pg_detail" METHOD="post" NAME="myform1" onSubmit=""> <INPUT type="button" value="詳細" onClick="subwinOpen();" /> </FORM> 子ウィンドウの起動時に、サーブレットに対しアクセスし、 動的にHTMLを生成する・・・という感じです。 サーブレット側で details の値を取得し、 String ddd = new String( req.getParameter("details").getBytes("8859_1"), "EUC_JP" ); 表示すると文字化けしてしまっているのですが、これを解消する方法はないでしょうか? 欲をいえば、親ウィンドのHTMLに <INPUT type="hidden" name="details" value="タイトル,名前,2002,10,住所," /> として値(情報)を持ち、 String aaa = new String( req.getParameter("detail0" ).getBytes("8859_1"), "EUC_JP" ); として、持ってこられればベストなのですが、これだとエラーで終わってしまうので・・・。 こちらの解決方法、およびご指摘も併せて お願いします。

    • ベストアンサー
    • Java
  • getParameterについて

    今フォームの内容(文字列)をreq.getParameterValues(~)で持ってきているのですが、数字などを持って来たい場合は何を使えばいいんでしょうか? int suji = req.getParameterValues(int型); というようにすると、 javax.servlet.ServletRequest の getParameterValues(java.lang.String) は (int) に適用できません。 というエラーが出てしまうのです。

  • JSPでのrequest.getParameterについて教えてください

    ループで作った多数のテキストボックスに入力した値を request.getParameterで取得しようとしています。 テキストボックスは <input type="text" name="a<%count%>"> のようにして、ループしてもテキストボックス名が 同じものができないようにしています。 このような場合、どのようにしてrequest.getParameterで すべての値を取得すればよいのでしょうか? わかる方、ぜひアドバイスをよろしくお願いします。

  • JavaScriptからServletに渡した文字列が文字化け

    度々お世話になっています。 今回もよろしくお願いします。 JavaScriptからServletに渡した文字列が文字化けしてしまい解決できずにいます。 以下に使っているコードを抜粋します。 1)HTML表示。 2)HTML内のボタン押下でJavaScriptからServletに文字列を渡す。 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <SCRIPT LANGUAGE='JavaScript'> <!-- function subwinOpen() { window.open("pg_detail?type=0&detail=" + "国立競技場," +", "sub", "menubar=no") ; } //--> </SCRIPT> <FORM action="pg_detail" METHOD="get" NAME="myform1" onSubmit=""> <INPUT type="button" value="詳細" onClick="subwinOpen();" /> </FORM> 3)Servlet側で文字列取得。 pg_detail.java public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=EUC-JP"); String v_details = new String( req.getParameter("detail").getBytes("8859_1"), "JISAutoDetect" ); } 以上のコードを実行すると、 ”国立競技場,”が”国立競技?E”となってしまいます。 かなり端折ってしまいましたが、説明不足な個所があれば補足します。 よろしくお願いいたします。

  • 入力チェックとエラーメッセージの表示

    Javaについて勉強している者です。 現在、エントリー(登録)画面で入力した文字の検証処理をサーバーサイドで行い、 エラーがある場合は再度ページを表示し、その際には一緒に エラーメッセージを添える処理を作成したいと考えております。 入力チェックを行うクラスを作ってみたものの、 エラーメッセージをどのように組み込めば良いかという点に悩んでおります。 まとめてみると、期待する処理の流れは次の通りです。 1、エントリー画面に入力された文字の検証処理を行う 2、エラーがある場合にはJSPを再度表示(entry.jsp) 3、再度表示した際にエラーメッセージを添える。 下記はコードの一部です。 //INSERTChecker.java //未入力チェック public boolean requiredCheck(String input){ if(input.equals("")){ return false; } return true; } //数値チェック// public boolean numberCheck(String input){ for(int i = 0; i < input.length(); i++){ if(!Character.isDigit(input.charAt(i))){ return false; } } return true; } } //Validator.java public class Validator extends HttpServlet{ public boolean validate(HttpServletRequest req) throws ServletException,IOException{ request.setCharacterEncoding("Windows-31J"); String id = req.getParameter("id"); String pass = req.getParameter("pass"); String name = req.getParameter("name"); String tel = req.getParameter("tel"); InputChecker check = new InputChecker(); //未入力事項がないかチェック check.requiredCheck(id); check.requiredCheck(pass); check.requiredCheck(name); check.requiredCheck(tel); //数字のみが入力されているかをチェック check.numberCheck(tel); return true; //Servlet else if(select != null && select.equals("エントリー")){ String id = req.getParameter("id"); String pass = req.getParameter("pass"); String name = req.getParameter("name"); String tel = req.getParameter("tel"); Bean bean=new Bean(); bean.setId(id); bean.setPass(pass); bean.setName(name); bean.setTel(tel); Entry cEntry=new Entry();//登録クラス cEntry.entry(bean); Validator vEntry=new Validator(); vEntry.validate(req); req.setAttribute("INSERT",cEntry); target = "/top.html";//登録後、topページに戻る } request辺りがキーワードになるのかな、と考え、色々調べたのですが 解決策は見つかりませんでした。 記述方法やアドバイス等御座いましたら、ご教授お願いいたします。 長文失礼いたしました。

  • request.getParameter()

    以下のような複数選択可能なメニューを用意しました。 <form action=...> <select name="opt" size=1 multiple> <option value>first <option value>second <option value>third </select><p> <input type="submit"> firstとsecondを選択してボタンを押した時に、 servletのプログラムの中で、 String option=request.getParameter("opt"); と実行したら、二つのオプション(first,second)を取ってきてくれるんですか? それとも、配列で取得しないとだめなんですか?

  • AUの一部携帯でHTMLをPOSTすると、値が空

    AUのK006やNS01の機種にて、下記のHTMLからPOSTをしたところ、サーブレット側にてパラメータ(regist_mail)の値が空となってしまいます。 S61Tの機種で試したら正常に取得できることから、原因が判明しておりません。どなたかご教授をお願いいたします。 HTMLやサーブレット側のファイルの内容は下記のとおりです。 ■HTML側 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta name="robots" content="noindex,nofollow"> </head> <body>  <form method="POST" action="/test/servlet/testentry">    <input size="20" maxlength="200" name="regist_mail" value="xxxxx@ezweb.ne.jp"><br>    <input type="submit" value="登録" name="entry"><br>  </form> </body> </html> ■サーブレット側のポスト関数 public void doPost(HttpServletRequest req, HttpServletResponse res)    throws ServletException, IOException {  // encFlag = 1 shif_jis変換する  // encFlag = 2 無変換  int encFlag = 1;  if ( req.getCharacterEncoding().toLowerCase().equals("shift_jis") ) {    encFlag = 2;  }  //パラメータのregist_mailの文字列の長さをチェックする  if ( convJp(req.getParameter("regist_mail"), encFlag).length() > 0 ) {    //    //ここにきてしまう。  } ■サーブレット側の共通関数 public static String convJp(String str, int encFlag) {  try {    if (encFlag == 1) {      return new String(str.getBytes("iso-8859-1"), "Shift_JIS");    }  }  catch ( Exception e ) {    e.printStackTrace();    return null;  }  return str; } =========================================

  • インスタンス

    String s1 = new String(str1.getBytes("8859_1"), "x-euc-jp"); s1 = new String(str2.getBytes("8859_1"), "x-euc-jp"); s1 = new String(str3.getBytes("8859_1"), "x-euc-jp"); のように同じ変数にたいして new演算子で新たにインスタンスを確保した際 前に確保したインスタンスは開放されているのでしょうか? 基礎的な質問かと思いますが宜しくお願い致します。

    • ベストアンサー
    • Java
  • ブラウザーでの入力値をサーブレットで取得する方法

    サーブレットの開発を行っていますが、ブラウザー側で 入力したパラメーターをサーブレットで受け取りたいのですがうまくいきません。 受け取りたいのは、以下のHTMLで作成したテキストボックスへの入力値です <form name="form7" method="post" action=""> <p> <input type="text" name="textfield2" size="4" maxlength="4"> 年 <input type="text" name="textfield" size="2" maxlength="2"> 月</p> </form> ブラウザー側からは <form action="http://localhost/servlet/yuushi" method=post> の指定を行っています。 サーブレットでの受け取り方は、 String p=request.getParameter("textfield2"); String p1=request.getParameter("textfield"); としましたが、p、p1とも何の値も入りませんでした。 getParameterで取得できると思ったのですが取得できませんでした。 値の取得方法の御教示をお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう