Javaサーブレットでのテキストボックス値の設定方法

このQ&Aのポイント
  • Javaサーブレットを使用してHTML画面のテキストボックスに値を設定する方法について教えてください。
  • HTMLで作られた画面のテキストボックスに値を設定し、ボタンを押下することによってJava側から別のテキストボックスに値を設定する方法を知りたいです。
  • JavaのdoGetメソッドでテキストボックスの値を取得し、既存のHTML画面の別のテキストボックスに値を設定する方法について教えてください。
回答を見る
  • ベストアンサー

Javaサーブレット?がわかりません。

質問です。 HTMLで作られた画面のテキストボックス(test1)に値を設定し、 ボタンを押下することによってJava(サーブレット?)に値を渡し、 Java側からHTML画面の別のテキストボックスに値を設定するのには どうしたら良いのでしょうか? 画面は <HTML><HEAD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <TITLE></TITLE> </HEAD><BODY> <FORM name="Form" action="main"> <TR><TD><INPUT type="text" name="test1"> <INPUT type="text" name="test2"> </TD></TR><BR> <TR><TD><INPUT type="submit" value="試験"></TD></TR> </FORM></BODY></HTML> こんな感じです。 Java側のdoGetメソッドで String name = request.getParameter( "test1" ); で取得した値を画面のtest2のテキストボックスに値を設定したいのですが 新しくHTML画面を作成するのではなく、既存の画面のテキストボックスに値をいれることができるのでしょうか? よろしくお願いします

noname#119770
noname#119770
  • Java
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
回答No.3

今環境ないので試してませんが、 Java 側で受け取ったものを戻すという方法は3種類ぐらいあります。 「RequestDispather による転送」「request 属性の利用」「PrintWriterによる出力」など ですが、ここは form の action でサーブレットを指定するのではなく JSP ファイル(そのファイル自身)を指定してみては。 JSP にはスクリプトレット、宣言、式 の3つがあり スクリプトレットに Java のコードを記述できます。そこでたとえば 分かりやすい例で %> String s = null; if (request.getParameter("namae").equals("three")) { s = request.getParameter("test3"); }... %> ... <INPUT type="text" name="test4" value="<%=s%>" /> Html タグもあってるかどうか試してません。 もっと良いアルゴリズムあるでしょうけど色々やってみてください。

noname#119770
質問者

お礼

ありがとうございます。 ようやく説明されている内容がわかりかけてきました。 早速試してみます、

その他の回答 (2)

回答No.2

同じく同じ JSP ファイル(action で送る先)で if 分岐して値を取得して式で test4 へ出力するという感じと思います。 サーブレットより JSP のほうが簡単でしょう。 サーブレット入門あたりで検索するとそのようなサンプルでてきそうですね。

noname#119770
質問者

補足

何度もすいません。 if分岐する時の条件はどうすれば良いのかわかりません。 最初のラジオボタンのnameが同じですし・・。 Java側で受け取った値を戻すのもまだよくわかりません。 サーブレット初心者なので(Javaもですが) もうちょっと具体的に教えて頂けないでしょうか?

回答No.1

HTML を JSP にして action="そのファイル"にしてみては。 <input type="text" name="test2" value="<%=request.getParameter("test1")%>" /> でしたかな。 最初は null になりますけど。試してないのでただの参考程度にしてください。

noname#119770
質問者

補足

なるほどー参考になります。 もう一つ聞きたいのですが、 もしもラジオボタンを選択することで有効になるテキストボックスが3つあり、 <INPUT type="button" name="namae" value="one"> <INPUT type="text" name="test1"> <INPUT type="button" name="namae" value="two"> <INPUT type="text" name="test2"> <INPUT type="button" name="namae" value="three"> <INPUT type="text" name="test3"> ラジオボタンを選択し、有効になったテキストボックスに設定されている値を <INPUT type="submit" value="試験"> ↑ボタン押下後にJava側に渡し、 戻り値を4つ目のテキストボックス <INPUT type="text" name="test4"> に設定するにはどうしたら良いのでしょうか? JavaとHTMLの関連がつかめず戸惑っています。 よろしくお願いします。

関連するQ&A

  • ボタンクリックでフォーカス移動

    JavaScript超ビギナーなので方法がよくわかりません。 フォームにテキストボックス(配列)4個あり ボタンを押すたびに未記入のテキストボックスにカーソルを移動したいのですが。どのようにしたらいいでしょうか。 <form name="form1" method="post"> <table width="200" border="1"> <tr><td ><input type="submit" name="Submit" value="送信"></td></tr> <tr><td ><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> </table> </form>

  • ジャバスクリプト

       ご質問させていただきます。 私は、下記のプログラムをHTMLソースの中に組み込みました。 <HTML> <HEAD> <META HTTP-EQUIV="content-type" CONTENT="text/html; CHARSET=shift_jis"> <center> </HEAD> <BODY TEXT="#000000" BACKGROUND="background.jpg"> <FORM NAME="Form1" ACTION="mailto:3d1724@jcom.home.ne.jp/" METHOD="post" ENCTYPE="text/plain" onSubmit="location.href='thankyou.htm'"> <TABLE> <TR> <TD>貴サイトの内容説明</TD> <TD><INPUT TYPE="text" SIZE="90" ID="customer" NAME="customer"></TD> </TR> <TR> <TD>メッセージ</TD> <TD><TEXTAREA NAME="body" ROWS="7" COLS="70"></TEXTAREA> </TD> </TR> </TABLE> <BR><INPUT CLASS="submit" TYPE="submit" VALUE=" 送信 "> <INPUT TYPE="reset" VALUE=" クリア "></FORM> </BODY> </HTML>  このプログラムを利用して、  送信ボタンをクリックした時にフォームが送られたことを示すページを表示させたいのです。ですが、この状態では表示されません。 表示方法を教えていただけないでしょうか。初心者ですので(難しくない説明を)お願いできればと思います。よろしく、お願いします。

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • 同一nameの input type="text" の合計を計算したい

    初めて質問させて頂きます。 form 内で同じname名を付けられたテキストフィールドの値の合計を計算し、その値に定数を乗じた値を表示させたいのですが、出来ずに困っております。 name名を別にすれば簡単に出来そうなのですが、このinputが別CGIからの受け取りの関係で数が不定で同一nameが付いてしまいます。(inputは1個以上で上限は無し) CGI側を書き換える事は自分の技術的に不可能なので、このような質問となりました。 以下は自分なりに試行錯誤の末の拙いソースです。 どなたかお分かりになる方、ご教授を宜しくお願い致します。 <html> <head> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> <!-- function kakunin() { var sub = Form.getInputs('form1', 'text'); ( var subtotal = ~~~; ここに上で得た数字を合計するみたいなものがくるのかなと・・・) var total = subtotal * 200; document.form1.field_total.value = total; // 合計を表示 } // --> </script> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <form action="" name="form1"> <table> <tr><td><input name="kazu" type="text" value="2"></td></tr> <tr><td><input name="kazu" type="text" value="1"></td></tr> <tr><td><input name="kazu" type="text" value="3"></td></tr> <tr><td>・・・増えたりします・・・</td></tr> <tr><td><input type="button" size="8" onclick="kakunin()" value="合計を確認"></td></tr> <tr><td><input type="text" name="field_total" size="30" value="total"></td></tr> </table> </form> </body> </html>

  • リスト上のtextボックスに数値を入れるJS

    以下の例えば120人のリストのテキストボックスに、テストの 順位を表す順位を1から120まで一括入力するボタンを設 けたいのですが、javascriptをご教示いただけますと幸 いです。さらに、順位は10とびで、10、20、30、・・・1200、 と入れるボタン(10ずつカウントアップ)もあるとうれ しいです。 よろしくお願い致します。 <form method="post" action="" name="myform"> <table> <tr><td>出席番号</td><td>氏名</td><td>順位を入力</td></tr> <tr><td>1</td><td>阿藤一郎</td><td><input type="text" name="rank" value=""></td></tr> <tr><td>2</td><td>伊藤次郎</td><td><input type="text" name="rank" value=""></td></tr> <tr><td>3</td><td>宇藤三郎</td><td><input type="text" name="rank" value=""></td></tr>    :   (以下、120人続く) <tr><td>120</td><td>加藤太郎</td><td><input type="text" name="rank" value=""></td></tr> </table> </form> なお、リストは120人とは限りません。 50人(50行、50テキストボックス)の場合も、 80人(80行、80テキストボックス)の場合もあり ます。

  • フォームのテキストボックスの枠線を変更するには。

    フォームのテキストボックス(ほかも)は、今これを入力するところのように くぼんでますよね? これを普通の枠線のようにはできないでしょうか? みたのは http://www.rfs.jp/sitebuilder/perl/03/03_02.html#テキストボックス のページです。 こんなふうにするにはどうしたらいいですか? ちなみに現在は <FORM ACTION="test.cgi"> <TABLE> <TR> <TD>名前</TD> <TD><INPUT TYPE="TEXT" SIZE=10 NAME="NAME">さん</TD> </TR> </TABLE> </FORM> というような感じになっています。

    • ベストアンサー
    • HTML
  • 初歩的な質問です、長文ですいませんが困っております。

    初めてHP製作で掲示板を作りたいと思い、本(Perl/CGI辞典)を読みながら悪戦苦闘中です。まずは本のスレッド掲示板を作たのですが、なぜか出力されません。PERLのチェックはHPでやって異常ありませんでしたが、なぜか「500Internal Server Error」になってしまいます。まずは出力部分と思い抜粋して見たのですが、これまた出力されません。以下にその部分を貼り付けますので、どなたかお教え願えないでしょうか? #!C:\perl\bin\perl -w print<<HTML_EOF; Content-type:text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML LANG="ja"> <HEAD><TITLE>$bbstitle</TITLE> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY BGCOLOR="${bgcolor}"> <BR> <B>$bbstitle</B><BR> <FORM ACTION="${cginame}" METHOD=POST> <TABLE WIDTH='90%'> <TR> <TD WIDTH=30>名前</TD> <TD><INPUT TYPE="TEXT" NAME="name" SIZE=30 VALUE="$name"></TD> </TR> <TR> <TD>Mail:</TD> <TD><INPUT TYPE="TEXT" NAME="mail" SIZE=30 VALUE="$mail"></TD> </TR> <TR> <TD>URL:</TD> <TD><INPUT TYPE="TEXT" NAME="url" SIZE=60 VALUE="$url"></TD> </TR> <TR> <TD>TITLE:</TD> <TD><INPUT TYPE="TEXT" NAME="title" SIZE=60></TD> </TR> <TR> <TD></TD> <TD><TEXTAREA NAME="comm" COLS=60 ROWS=6></TEXTAREA></TD> </TR> </TABLE> <INPUT TYPE="SUBMIT" VALUE="投稿"> <INPUT TYPE="RESET" VALUE="クリア"></FORM> <BR> </BODY> </HTML> HTML_EOF

    • ベストアンサー
    • CGI
  • 再度読み込みは出来ないのでしょうか?

    各テキストボックスに値を入れて、 C11 = a11 * b11 + a12 * b21 + a13 * b31、 c12 = a11 * b12 + a12 * b22 + a13 * b32、 : : c21 = a21 * b11 + a22 * b21 + a23 * b31 c22 = a21 * b12 + a22 * b22 + a23 * b32・・・ としたいのですが、うまくロジックが思いつきません。 単純に式をずらずら書いたのですが、c12以降の欄がすべてゼロになってしまいます。 いい方法を教えてください。お願いします。 <head> <script> function kei(){ var form_a=document.getElementById('A'); var form_b=document.getElementById('B'); var form_c=document.getElementById('C'); var keic11 = 0; var keic12 = 0; : : keic11=parseInt(form_a.a11.value) * parseInt(form_b.b11.value) * parseInt(form_a.a12.value) * parseInt(form_b.b21.value) + parseInt(form_a.a13.value) * parseInt(form_b.b31.value); form_c.c11.value = keic11; keic12=parseInt(form_a.a11.value) * parseInt(form_b.b12.value) + parseInt(form_a.a12.value) * parseInt(form_b.b22.value) + parseInt(form_a.a13.value) * parseInt(form_b.b32.value); form_c.c12.value = keic12;     :     : } </script> </head> <body> <table border = 1> <form id = "A"> <tr> <td> <input type = "text" size = 5 name = "a11"></input> </td> <td> <input type = "text" size = 5 name = "a12"></input> </td> <td> <input type = "text" size = 5 name = "a13"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a21"></input> </td> <td> <input type = "text" size = 5 name = "a22"></input> </td> <td> <input type = "text" size = 5 name = "a23"></input> </td> </tr> </form> </table> <table boeder = 1> <tr> <input type = "button" onClick="kei()" value = "×"></input> </tr> </table> <table border = 1> <form id = "B"> <tr> <td> <input type = "text" size = 5 name = "b11"></input> </td> <td> <input type = "text" size = 5 name = "b12"></input> </td> <td> <input type = "text" size = 5 name = "b13"></input> </td> <td> <input type = "text" size = 5 name = "b14"></input> </td> <td> <input type = "text" size = 5 name = "b15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b21"></input> </td> <td> <input type = "text" size = 5 name = "b22"></input> </td> <td> <input type = "text" size = 5 name = "b23"></input> </td> <td> <input type = "text" size = 5 name = "b24"></input> </td> <td> <input type = "text" size = 5 name = "b25"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b31"></input> </td> <td> <input type = "text" size = 5 name = "b32"></input> </td> <td> <input type = "text" size = 5 name = "b33"></input> </td> <td> <input type = "text" size = 5 name = "b34"></input> </td> <td> <input type = "text" size = 5 name = "b35"></input> </td> </tr> </form> </table> 答え <table border = 1> <form id = "C"> <tr> <td> <input type = "text" size = 5 name = "c11"></input> </td> <td> <input type = "text" size = 5 name = "c12"></input> </td> <td> <input type = "text" size = 5 name = "c13"></input> </td> <td> <input type = "text" size = 5 name = "c14"></input> </td> <td> <input type = "text" size = 5 name = "c15"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c21"></input> </td> <td> <input type = "text" size = 5 name = "c22"></input> </td> <td> <input type = "text" size = 5 name = "c23"></input> </td> <td> <input type = "text" size = 5 name = "c24"></input> </td> <td> <input type = "text" size = 5 name = "c25"></input> </td> </tr> </form> </table> </body>

  • HTMLの表示内容にfor文を使用したい

    現在Perlで予約画面を作成しています。 ソースは↓のような感じです。 ============================== #! c:/perl/bin/perl #DBより取得 @type = (); @type=('シングル','ツイン'); &display; #------------------------------------------------- sub display { print "Content-type: text/html\n\n"; print <<EOM; <html> <head> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form> <table border="0"> <tr> <td>タイプ</td> ##Loop Start <td><input type="checkbox" name="kotsu" value="1"></td> <td>$type[0]</td> <td><input type="checkbox" name="kotsu" value="2"></td> <td>$type[1]</td> ##Loop End </tr> <tr> <td>お名前</td> <td colspan="4"><input type="text" size="28" name="name">(全角文字)</td> </tr> <tr> <td><input type="submit" id="submit" value=" 送 信 ">   <input type ="reset" value="リセット"></td> </tr> </table> </form> </body> </html> EOM exit; } ============================== HTMLのLoopと記述している部分にDBより取得した値をfor文で記述したいのですが、うまくいきません。 HTML内にPerlの処理を組み込むには、どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • JNAVIから提供されたメールフォーム

    まったくの素人だと思ってください。 よろしくお願いします。 JNAVIから提供していただいた、メールフォームに入力必須項目を付けたいのです。 HTMLはホームページビルダーでカスタムできます。 CGIを勉強しようと思って本も買ったのですが???です。 ネットでかなり調べたのですが???です。 HTMLにタグ(というのかな。文字です。)を、書くのですよね。 いろいろと、文字を入れました。エラーがでるようになった文字もあったのですが、文字化けして無茶苦茶になりました。 HTMLは <CENTER><P><BR> <form method="post" action="FormMail.pl"> <!-- 重要 !! "realname" と "email" の項目は変更しないでください 他の "name=" のテキスト項目はサンキュウページに表示されます。 必要に応じて項目を追加、削除してください --> <table> <tr> <td>eMail</td> <td><input type="text" name="_email"></td> </tr> <tr> <td>名前</td> <td><input type="text" name="realname"></td> </tr> <tr> <td>名前(カタカナ)</td> <td><input type="text" name="名前(カタカナ)"></td> </tr><TR> <TD>郵便番号</TD> <td><input type="text" name="郵便番号"></td> </TR><tr> <td>都道府県</td> <td><input type="text" name="都道府県"></td> </tr> <tr> <td>住所</td> <td><input type="text" name="住所"></td> </tr> <tr> <tr> <td>電話番号</td> <td><input type="text" name="_電話番号"></td> </tr> <tr> <td colspan="2"><input type="submit"></td> </tr> </table> </form> </CENTER> です。 私には、無理なのでしょうか? CGIファイルを見なければ入力する文字はわからないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう