JSPでデータを受信する

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

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

例:

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

○ ファイル

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

ファイル名 Form.html

サンプルダウンロード

○ プログラム

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

Form.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>入力フォーム</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

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

FormTest.jsp

  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>
  11. <html>
  12. <head>
  13. <meta 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>

○ 実行結果

次のURLを入力して実行してみましょう。

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

実行結果
実行結果

○ 解説

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

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

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

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

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

前へ   次へ