SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WTPではじめるサーバサイドJava入門

サーバサイドJava入門 フォームデータの取り扱いとページ遷移の基本

第3回 フォーム送信とデータのやり取り


  • X ポスト
  • このエントリーをはてなブックマークに追加

WTPではじめるサーバサイドJava入門第3回です。今回は、フォームの送信と、それに伴うさまざまなデータのやり取りの方法について説明を行いましょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 今回はフォームを使った送信と、それに関連して必要となってくるさまざまなデータのやり取りの方法について説明します。フォームの送信は、テキストだけでなくチェックボックスやラジオボタン、選択リストなどさまざまなものがあります。また、必要なデータを他のページに渡したり、JSPから他のページへ移動する方法なども考える必要があるでしょう。

過去の記事

対象読者

  • Javaの基本(文法全般および基本的なクラスライブラリの使い方程度)をマスターしている人。
  • サーバサイド(JSP、サーブレット)について基礎から勉強したい人。
  • Eclipse WTPを使った開発に興味がある人。

チェックボックスとラジオボタン

 前回、作成したサンプルは、「入力フィールドにテキストを書いて自分自身に送る」というものでした。フォームでは、テキストの他にもさまざまな形でデータを送信します。チェックボックスやラジオボタン、一覧リストなど、HTMLのフォームにはいくつものGUI用部品が用意されていますね。

 これらを扱う場合、つい「チェックボックスは真偽値だろうか?」などと余計なことを考えてしまいがちです。が、はっきり言ってしまえば、Webのフォームから送られるデータは、「テキスト」だけです。それ以外の値が送られることはありません。基本的にHTTPで送受されるデータというのは、どんなものであれ「すべてテキストとして送られる」と考えましょう。

 では、チェックボックスとラジオボタンは、どのような値が渡されるのでしょうか。整理すると次のようになります。

  • どちらも、未選択(どれもチェックされていない)なら、getParameterで得られる値はnullになる。
  • チェックボックスの場合、チェックされていたらvalueが送られる。
  • ラジオボタンの場合、選択されている項目のvalueが送られる。

 要するに、getParameterで値を調べ、nullならば未選択を示す。nullでなければ選択された項目のvalueが得られる、というわけです。では、実際に簡単な例を作成してみましょう。

<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" 
          content="text/html; charset=windows-31j">
    <title>JSP SAMPLE</title>
  </head>
  <body>
<%
  request.setCharacterEncoding("windows-31j");
  out.println("※あなたが送信した内容<br>");
        
  String chk = request.getParameter("check1");
  String chk2 = chk == null ? "(check:未送信)" : chk;
  out.println("<font color=#FF0000>check:" + chk2 + "</font>");
        
  String radio = request.getParameter("radio1");
  radio = radio == null ? "(radio:未送信)" : radio;
  out.println("<font color=#FF0000>radio:" + radio + "</font>");
        
%>
    <form method="post" action="./index.jsp">
      <label>
        <input type="checkbox" name="check1" value="check1"
          <%=chk != null ? "checked" : "" %>>チェックボックス
      </label>
      <br>
      <label>
        <input type="radio" name="radio1" value="Windows"
          <%=radio.equals("Windows") ? "checked" : "" %>>Windows
      </label>
      <label>
        <input type="radio" name="radio1" value="Linux"
          <%=radio.equals("Linux") ? "checked" : "" %>>Linux
      </label>
      <label>
        <input type="radio" name="radio1" value="Mac OS"
        <%=radio.equals("Mac OS") ? "checked" : "" %>>Mac OS
      </label>
      <input type="submit">
    </form>
  </body>
</html>
送信すると、チェックボックスとラジオボタンの選択状態を表示する
送信すると、チェックボックスとラジオボタンの選択状態を表示する

 前回作成した「index.jsp」をそのまま書き換えて動かしてみてください。チェックボックスとラジオボタンの値が送られ表示されるのが分かるはずです。

 これらのコントロールを使う場合、注意すべきは得られる値よりも「値の再現」の方法です。入力フィールドなどの場合はvalueに値を書き出せば送信した値が初期状態で表示されました。ですが、チェックボックスやラジオボタンの場合にはこれは使えません。これらの部品の場合、タグにcheckedという属性が追加されている項目が選択された状態として表示されます。そこで、チェックボックスの場合には、

<%=chk != null ? "checked" : "" %>

 このようにして値がnullでなければ「checked」を出力すればよいでしょう。またラジオボタンの場合は、

<%=radio.equals("Windows") ? "checked" : "" %>

 このようにして、変数に保管してある値がそのラジオボタンのvalueと同じかどうかをチェックし、同じならば「checked」を出力するようにしておきます。これを各ラジオボタンに用意しておけば、選択された項目だけONになって表示されます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
一覧リストと複数項目の選択

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
WTPではじめるサーバサイドJava入門連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1369 2008/08/19 19:12

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング