• ベストアンサー

getParameter and スペース

HTMLフォームのテキストフィールドに「 AAA△BBB 」と入っているとします。 HTMLフォームから送信されたデータをサーブレットを受け取る為に getParameter() メソッドを使用すると 「AAA」と取得されます。 どうも△(半角スペース)が途中に存在するとそれ以降の値が取れません。(全 角スペースはまだ試していません) AAA△BBB を取得するにはどうしたらよいのでしょうか?

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

  • ベストアンサー
  • ZIGEN
  • ベストアンサー率100% (5/5)
回答No.1

実際に試してみたのですが、AAA△BBB のような間に 半角空白があっても、正しく取得できましたが・・・・ 以下に試したサンプルをつけます。 ----- import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class Servlet1 extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; /**グローバル変数の初期化*/ public void init(ServletConfig config) throws ServletException { super.init(config); } /**HTTP Get リクエストの処理*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet1</title></head>"); out.println("<body>"); out.println("<form method=\"POST\" action=\"Servlet1\">"); out.println("<input type=\"text\" name=\"name\" size=\"20\">"); out.println("<input type=\"submit\" value=\"送信\" name=\"B1\""); out.println("サーブレットは GET を受信しました。これは応答です。"); out.println("</form>"); out.println("</body></html>"); } /**HTTP Post リクエストの処理*/ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); String name = request.getParameter("name"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet1</title></head>"); out.println("<body>"); out.println("取得したフォームデータは " + name); out.println("</body></html>"); } }

suigaku
質問者

お礼

getParameterする文字のエンコーディングを すると直りました。 ソースまで表示していただいてありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTMLで改行するとスペースが開く

    HTMLで改行するとスペースが開いてしまうのですが、 これは仕様なのでしょうか? ・これは開かない aaa<a href="***">bbb</a> 結果:aaabbb ・これは開く aaa(改行) <a href="***">bbb</a> 結果:aaa bbb

    • ベストアンサー
    • CSS
  • requestパラメータの内容変更

    はじめまして。 request.getParameter()とrequest.setAttribute()について教えてください。 サーブレット側で画面制御をするために、アクションクラスの中での処理内容によってrequestパラメータを変更しようとしています。 具体的には、submit時に ...?id=aaa とした値をサーブレット側の処理内容によって request.setAttribute("id",'bbb')などと変更したいのです。 上記の構文であっているとは思うのですが、値が変わってくれません。 request.setAttribute("id","bbb")のあと、すぐにrequest.getParameter("id")とすると"aaa"が取れるのです。 これは何か使い方が間違っているのでしょうか? ご教授よろしくお願いします。

  • getParameter と getAttributeの違いについて

    Servletで、Form内の任意の項目を取得する場合には、 「getParameter」 と 「getAttribute」があります。 この二つの違いとしては getParameter 戻り値:String なのに対して getAttribute 戻り値:Object という違いがあります。 感覚的には getParameterも、getAttributeも、 Form内の任意の項目の値を取得する場合に getParameter("項目名"); getAttribute("項目名"); という使い方で 「どちらでもHTML(JSP)のフォーム内のデータを取得できる」という感覚がありあます。 ちょっと上手く纏められず、前提が長くなってしまったのですが 【ご質問1】 getParameterとgetAttributeの、 決定的な違いとはなんなのでしょうか? 参考のURLにもあるように 「Parameter は request にユーザが乗せてきたもの。 」であり、 「Attribute は request 生成後に Servlet だか JSP だかがくっつけたもの。」であるという違いが決定的な違いでしょうか? 言い換えれば Parameter は フォーム内のリクエストデータを受け、渡す役割をもつ、担当者であり Attribute は フォーム内のリクエストデータを受け、加工し、渡す役割を持つ担当者である ということでしょうか? 【ご質問2】 getAttributeがあるにも関わらず、 getParameterは何故存在するのでしょうか? getAttributeは戻り値をObject型として戻りますが、String型にキャストしてやれば、それでgetParameterで取得した効果と同じ効果が得られるものだと思われるので getParameterの存在理由が見出せないのですけども、getParameterはgetParameterで何か特別な役割をもっているのでしょうか? 【ご質問3】 フォーム内データを取得する場合、 「getParameter」でなければならないとか「getAttribute」を使用しなければならない、とかそういった決まりはありますでしょうか? [参考URL] http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=403&forum=12

    • ベストアンサー
    • Java
  • JSPでのrequest.getParameterについて教えてください

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

  • 入力データの半角スペースと全角スペースを区別させる方法

    データベースに文字列を保存する際、既に同じ文字列が保存されていないか事前にチェックをかけているのですが、この時半角スペースが入った文字列と、全角スペースが入った文字列を同じものと認識してしまい、これを区別したいのですが、どういった方法があるのでしょうか。 具体例を出しますと、 「AAA BBB」(間の空白は全角スペース)を入力する際、同じ文字列が同じフィールドに保存されていないか、SQLのWHERE句で「フィールド名="AAA BBB"」を指定して検索し、同じ文字列があれば警告を出しているのですが、「AAA BBB」(間の空白は半角スペース)にも検索でマッチしてしまいます。 この検索の時に「AAA BBB」をマッチさせないようにしたいのです。 OS:Linux MySQLバージョン:5.1.22 文字コード:UTF-8 です。 よろしくお願いします。

  • JavascriptでAppletを制御したい

    現在WEBアプリケーションを作成中ですが、 APPLETのPARAMETERの値を、 HTMLに記述した、JAVASCRIPTから書き換えられないか思案中です。 例 <APPLET> <Param name="AAA" value="2" > </APPLET> <INPUT TYPE="TEXT" NAME="BBB" VALUE="999"> <INPUT TYPE="BUTTON" NAME="RELOAD" VALUE="RELOAD"> のPARAMの値を変更したいのです。 このAAAのVALUE値を、BBBの値で変更して、RELOADボタンを押すと、 APPLETがPARAMを読み直して、再実行(RUNメソッド起動)するようにしたい。 APPLET側では現状ではINITメソッドでgetParameterを発行しています。 たぶんこれはRUNメソッドに移動しないといけないと思います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 原因不明の半角スペースの追加現象

    今年から仕事でシェルスクリプトでコーディングすることになり初めて触る言語なので日々勉強しているのですが、どうしても解決方法の見つからないものが出てきてしまったので質問させて頂きます。 ファイルから行を読み込んでsql文に追加入力しようとしているのですが、抽出した単語にシングルクォーテーションを付ける際、半角スペースが一文字分シングルクォーテーション内部に出来てしまいます。 以下例です。 aaa.txt←読み込むファイル aaa,bbb,ccc,ddd←ファイル内容の簡略版 ・ ・ ・ #!/bin/sh while read LINE;do CUT1=`echo ${LINE} | cut -d , -f1`←※1 echo \'${CUT1}\'>>bbb.txt←※2 CUT2=・・・       ・       ・   同じことを繰り返す       ・ done<aaa.txt 結果 bbb.txt 'aaa ''bbb ''ccc '・・・ ※1:この部分は少々曖昧ですが、LINEに読み込んだ行の1番目のフィールド(今回の例ではaaa)を抽出してCUT1に入れようとしています。 まだまだ未熟者の為ソースがおかしいかもしれませんが、今回はそのことに関しては気にしないでください。 プログラム自体はきちんと走っています。 問題になっている点は※2の部分で、シングルクォーテーションを付けると勝手に半角スペースが追加されてしまいます。 CUT1には「aaa」と半角スペースのない状態で入っています。 sedを使ってスペースをなくそうかとも考えたのですが、何分データ量がすごい数なので少しでも走らせるプログラムを減らしたいのです。 sed以外で半角スペースをなくす方法はありますでしょうか? また、これはどんな理由で半角スペースが入ってしまうのか原因もわかりますでしょうか? 簡単な質問ですが、ご教授の方よろしくお願いいたします。 一応sedでの半角スペースを削除する方法もご教授頂けたら幸いです。

  • 【ACCESS】重複チェック方法について

    下記のように、複数フィールドがあり、 フィールド1,2,3が全て同じレコードを抽出したいのですが 抽出する方法があれば、教えてください。 フィールド1 フィールド2 フィールド3 ・・・・ ――――――+――――――――+――――――――+――――― 12345 AAA aaa 12345 BBB aaa 12378 AAA aaa 12378 AAA bbb 23456 CCC bbb 23456 CCC bbb  ―>抽出したい!! 23456 CCC ccc

  • 抽出条件入力用テキストボックスが空白の場合の抽出条件

    SQL初心者です。 今あるテーブル(TABLE)に | VALUE_A | VALUE_B | VALUE_C | VALUE_D | ----------------------------------------- | 000 | AAA | AAA | AAA | | 001 | AAA | AAA | BBB | | 002 | AAA | BBB | AAA | | 003 | BBB | BBB | BBB | | 004 | BBB | BBB | NULL | のようなデータが入っているとします。 Web上から VALUE_B VALUE_C VALUE_D に対しそれぞれテキストボックス入力フィールドから値を入力し検索を行うようにしたいのです。 [VALUE_B]=AAA [VALUE_C]=AAA [VALUE_D]=AAA と入力されれば VALUE_A:000 を検索結果として出します。 [VALUE_B]=AAA [VALUE_D]=AAA と入力されれば VALUE_A:000 VALUE_A:002 を検索結果として出します。 [VALUE_B]=AAA だけが入力された場合は VALUE_A:001 VALUE_A:002 VALUE_A:003 を検索結果として出します。 つまり、フォームのテキストボックスに入力された条件で抽出し、入力が無い場合は全件抽出を行いたいのです。 この場合、どのようなSQLを組めばよいのかわかりません。ANDやORだけでは対応できないような気がします。Oracleを始めたばかりということもあり、どのような関数を使えばよいのかもわかりません。どなたかご教授いただけませんでしょうか??よろしくお願いします。

  • request.getparameterで取得した値を次のファイルでも使う方法は?

    a.jspのフォームに入力された値を b.jspで表示するためにrequest.getparameterで取得します。 その後、c.jspでもさき程のrequest.getparameterで取得した値を 使用したいと思っているのですが 何か方法はありませんか? わかる方、よろしくお願い致します。

    • ベストアンサー
    • Java
MG7530の終了できません
このQ&Aのポイント
  • MG7530を終了させることができません。
  • しばらく終了画面が表示されたままで、電源コードを抜いても終了できない状況です。
  • 電源コードを抜く方法で解決することができるかどうか気になっています。
回答を見る

専門家に質問してみよう