Webアプリケーションを作成するにあたり、ブラウザへの出力ばかりではなく、ラジオボタンを使ってユーザー側からの入力を取得する場合がある。ここではその方法について説明する。
ラジオボタンのデータ取得の仕方
ラジオボタンとは、Webページで選択をするための丸いボタンのことである。自由に文字を入力できるテキストボックスと違い、このボタンの場合、いくつかあるボタンの中からひとつしか選ぶことができない。
サーブレットが選択されたラジオボタンのデータを取得するために、クライアントからのリクエスト情報が入っているHttpServletRequestオブジェクトに対してgetParameterメソッドを使う。ラジオボタンのデータはリクエスト情報の中にパラメータとして含まれている。このメソッドにラジオボタンのパラメータの名前(name)を引数として与えることによって選択されたラジオボタンと紐付けされたデータ(value)を取得することができる。
書き方の基本は簡単だ。
HttpServletRequestオブジェクト. getParameter (ラジオボタンの名前);
実際のHTML画面でラジオボタンを選択するコードはこうなる。
<input type="radio" name="radiobutton" value="apple"> りんご
サーブレット側のコードはこうなる。
String selectedFruit = request.getParameter("radiobutton");
ラジオボタンのデータを取得するサンプルプログラム
このサンプルプログラムラムは、3つの果物の中から好きな果物を選んでもらい、それを表示するというものだ。そのデータを取得したサーブレットは、選択された果物と紐付けられていた値をそのままレスポンスの画面に表示する。
サーブレットの配置とプログラムのコードは次のようになっている。
最初にHTMLで書かれたフォームデータ入力画面のコードを示す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html lang="ja"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <title>ラジオボタンの取得サンプル</title> </head> <body> <p>好きな果物ひとつを選んでください。</p> <form action="/Servlet/ServletRadioButton" method="get"> <input type="radio" name="radiobutton" value="apple"> りんご <input type="radio" name="radiobutton" value="peach"> もも <input type="radio" name="radiobutton" value="banana"> ばなな <p><input type="submit" value="選択実行" style="WIDTH: 200px; HEIGHT: 20px"></p> </form> <p> </body> </html> |
次に、HTML画面からリクエストを受け取るサーブレットのコードを示す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/ServletRadioButton")//[1] public class ServletRadioButton extends HttpServlet {//[2] protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//[3] response.setContentType("text/html; charset=Shift_JIS");//[4] String selectedFruit = request.getParameter("radiobutton");//[6] PrintWriter out = response.getWriter();//[7] out.println("<html><head></head><body>");//[8] out.println("<p>あなたが好きな果物は" + selectedFruit + "です。</p>");//[9] out.println("</body></html>");//[12] } } |
実行結果
ブラウザにURL:http://localhost:8080/Servlet/ radiobuttons.html を入力し、Enterを押す。
表示されるブラウザ画面:
ラジオボタンの「りんご」を選んで、選択実行ボタンを押す。
表示されるブラウザ画面:
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] アノテーションの宣言をする。
- [2] HttpServletを継承して、ServletRadioButtonクラスを定義する。
- [3] doGet()メソッドをオーバーライドして定義する。
- [4] Content Typeを設定する。
- [5] 選択されたラジオボタンのデータを取得し、変数selectedFruitに代入する。
- [6] HTMLを出力するためのPrintWriterオブジェクトを取得する。
- [7]-[9] PrintWriterオブジェクトに「あなたが好きな果物は(取得した値:selectedFruit )です。」と表示するHTMLコードを出力する。
まとめ
サンプルプログラムをご覧頂いてもわかる通り、ラジオボタンを使って入力されたデータを元に様々な処理を行う事ができる。項目の名称を変更したり、選択肢を増やしてみたりなど、自分なりに色々と変更してみよう。