JSPでデータを受信する

 クライアントからデータを取得したい場合は、Formタグを指定したWebページを利用します。このHtmlのFormタグにはmethod属性があり、その属性にはGETとPOSTがあります。この属性の設定値に応じて送信方法が変わります。

 GET送信はフォームに入力したデータを遷移先のURLに埋め込んで送信します。

例:

http://localhost:8080/WebApp/gettest.jsp?name=satoh&age=29

○ ファイル

 入力フォームを作成します。プロジェクトに次のようなファイルを追加してください。

ファイル名 Form.html

サンプルダウンロード

○ プログラム

 次のようにHtmlを入力してください。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>入力フォーム(POST送信)</title>
  6. </head>
  7. <body>
  8.  <form action="FormTest.jsp" method="GET">
  9.   名前:<br>
  10.   <input type="text" name="name"><br>
  11.   住所:<br>
  12.   <select name="prefecture">
  13.   <option>愛知県</option>
  14.   <option>岐阜県</option>
  15.   <option>三重県</option>
  16.   </select><br>
  17.   趣味:<br>
  18.   <input type="checkbox" name="hobby" value="料理">料理
  19.   <input type="checkbox" name="hobby" value="ドライブ">ドライブ
  20.   <br>
  21.   <input type="submit" value="送信">
  22.   <input type="reset" value="リセット">
  23.  </form>
  24. </body>
  25. </html>

○ ファイル

 次に受信するJSPファイルを作成します。プロジェクトに次のようなファイルを追加してください。

ファイル名 FormTest.jsp

サンプルダウンロード

○ プログラム

 次のようにHtmlを入力してください。

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.  pageEncoding="UTF-8"%>
  3. <%
  4.  //送信されたデータを取得する
  5.  String name = request.getParameter("name");
  6.  String prefecture = request.getParameter("prefecture");
  7.  String[] hobby = request.getParameterValues("hobby");
  8.  String querystring = request.getQueryString();
  9. %>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD Html 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  11. <html>
  12. <head>
  13. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  14. <title>受信ページ</title>
  15. </head>
  16. <body>
  17.  クエリ文字列:<%= querystring %><br>
  18.  名前:<%= name %><br>
  19.  住所:<%= prefecture %><br>
  20.  趣味:<% if(hobby != null){
  21.        for(int i=0; i<hobby.length; i++){ %>
  22.         <%= hobby[i] + "," %>
  23.       <% }
  24.      } %>
  25. </body>
  26. </html>

〇 実行結果

http://localhost:8080/WebApp/Form.html

実行結果
実行結果

○ 解説

 今回のサンプルでは複数のファイルが関係しています。まずは送信フォームの「Form.html」から見てみましょう。

 8行目のフォームタグでGET送信が指定されているため、「送信」ボタンをクリックするとURLに入力情報がセットされて遷移します。

 FormTest.jspが呼び出され、処理が始まります。5行目~7行目はGET送信で送られてきたデータを取得します。JSPでは暗黙のうちにHttpServletRequest型のrequest変数が用意されており、その中のgetParameterメソッドでデータを取得することができます。引数には入力フォームで指定した各データのname属性の値を指定します。チェックボックスのように一つの項目に複数のデータを持つデータを取得するには、getParameterValuesメソッドを使用します。このメソッドで入力された複数のデータを文字列配列として取得することができます。

 8行目では、getQueryStringメソッドを呼び出して、URLに埋め込まれたクエリ文字列を取得しています。このメソッドで取得できる文字列はURLエンコードされているため、日本語文字列は「%XX」で変換されています。

 17行目から24行目までは、取得・変換したデータを表示しています。今回は、チェックボックスのデータが複数選択される場合も考慮して、各項目を「,(カンマ)」で区切って表示しています。

前へ   次へ