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
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>入力フォーム</title>
- </head>
- <body>
- <form action="FormTest.jsp" method="GET">
- 名前:<br>
- <input type="text" name="name"><br>
- 住所:<br>
- <select name="prefecture">
- <option>愛知県</option>
- <option>岐阜県</option>
- <option>三重県</option>
- </select><br>
- 趣味:<br>
- <input type="checkbox" name="hobby" value="料理">料理
- <input type="checkbox" name="hobby" value="ドライブ">ドライブ
- <br>
- <input type="submit" value="送信">
- <input type="reset" value="リセット">
- </form>
- </body>
- </html>
○ ファイル
次に受信するJSPファイルを作成します。プロジェクトに次のようなファイルを追加してください。
ファイル名 | FormTest.jsp |
---|
○ プログラム
次のようにプログラムを入力してください。
FormTest.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%
- //送信されたデータを取得する
- String name = request.getParameter("name");
- String prefecture = request.getParameter("prefecture");
- String[] hobby = request.getParameterValues("hobby");
- String querystring = request.getQueryString();
- %>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>受信ページ</title>
- </head>
- <body>
- クエリ文字列:<%= querystring %><br>
- 名前:<%= name %><br>
- 住所:<%= prefecture %><br>
- 趣味:<% if(hobby != null){
- for(int i = 0; i < hobby.length; i++){ %>
- <%= hobby[i] + "," %>
- <% }
- } %>
- </body>
- </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行目までは、取得・変換したデータを表示しています。今回は、チェックボックスのデータが複数選択される場合も考慮して、各項目を「,(カンマ)」で区切って表示しています。