Tips and Trips -Labo-
JSP1.0基礎の基礎(1):パラメータへのアクセス

はじめに

「JSP1.0基礎の基礎」のコーナーでは、主にJSP未体験の人、触り始めたばかりの人達をターゲットに、JSPの雰囲気を味わってもらうべく、基本的(初歩的)な話をしていこうと思います。ただし、Javaに関してまでは、ここでは触れる余裕はないので、Javaも初めてよ、て方は、別に勉強してもらう必要はあるかも。
また、JSPの文法に関しては、JSP1.0ポケットリファレンス が多少は役に立つかもしれません。こちらもどうぞ。

今回の目的

そもそもJSPやServletは、動的ページを作るために存在しているようなものであるわけです。
そんなわけすから、第一回目としては、対話アクセスの入り口とも言える、FORMからのパラメータ取得の例を紹介しようと思います。

ポイント

request
(HttpServletRequest)
Clientからの情報は、HttpServletRequestに格納されています。
JRun3.0の場合には、暗黙にrequestという名称でアクセスできます。
request.getParameter()
(String)
パラメータで、取得したいパラメータの名称を与えると、指定されたパラメータの設定値をStringで返してくれます。指定したパラメータが存在しない場合には、nullが返されるので、必要に応じてエラーハンドリングを行いましょう。
request.getParameterValues()
(String[])
取得したいパラメータ値が複数存在する場合(たとえば、MULTIPLEのSELECTとかの場合)には、こちらを利用します。
結果は、Stringの配列(String[])で得られます。
request.getParameterNames()
(Enumeration)
FORMから飛んできたパラメータの名称がわからない場合には、このメソッドで、パラメータ名を取得することができます。
結果は、Enumeration(列挙型)で返ってきます。
request.getHeader()
(String)
HTTPヘッダの情報へアクセスするには、getHeader()メソッドを使用します。
今回の例では"Referer"(=呼び出しもとのURL)を取得します。

サンプルの実行イメージ

FORMで入力されたデータを表示しています。(この例ではGETで飛ばしているのでURLにパラメータが見えていますね)

※テスト用の入力FORMはこんな感じ

ソースコード


   1 <%@ page contentType="text/html; charset=euc-jp" %>
   2 <%@ page import="java.util.*" %>
   3 <HTML>
   4 <HEAD></HEAD>
   5 <BODY>
   6 <%--
   7    params.jsp
   8    Several Access Methods to access Parameters
   9 
  10    S.Terada
  11 --%>
  12 
  13 <HR>
  14 P1 = <%= request.getParameter("P1") %>
  15 <BR>
  16 P0 = <%= request.getParameter("P0") %>
  17 
  18 <HR>
  19 P2 = (
  20 <%
  21   String[] s = request.getParameterValues("P2");
  22   for(int i = 0; i < s.length; ++i) {
  23 %>
  24 <%= s[i] %>
  25 <%
  26   }
  27 %>
  28 )
  29 
  30 <HR>
  31 <%
  32   Enumeration e = request.getParameterNames();
  33   while (e.hasMoreElements()) {
  34     String sParamName = (String)e.nextElement();
  35     String[] sVals = request.getParameterValues(sParamName);
  36 %>
  37 Parameter Name: <%= sParamName %> = (
  38 <%
  39     for(int i = 0; i < sVals.length; ++i) {
  40 %>
  41 <%= sVals[i] %>
  42 <%
  43     }
  44 %>
  45 )<BR>
  46 <%
  47   }
  48 %>
  49 <HR>
  50 Referer URL = <%= request.getHeader("Referer") %>
  51 <HR>
  52 
  53 </BODY>
  54 </HTML>

サンプルコード解説

Line# 解説
1 pageディレクティブでcontextTypeを指定しています。日本語を含むページの場合には、ここでエンコードを指定して上げる必要があります。
2 今回のサンプルでは、Enumerationを使用しているので、java.util.*をインポートする必要が生じます。
6-11 <%-- comment --%>スタイルのコメントは、クライアントへ出力されません。純粋にプログラムのコメント等では、このコメントを使用すると良いでしょう。逆に、出力したいコメントは、通常のHTMLと同様で、<!-- comment -->を使用します。
14 request.getParameter(String sParamName)で、P1の値を取得しています。P1が複数存在する場合には、「どれかひとつ」が取得されます。
16 上記と同様ですが、存在しないパラメータを指定しました。実行結果のほうを見るとわかるとおり、nullが返ってきています。
21 request.getParameterValues(String sParamName)で複数のパラメータ値をString[]に取得しています。配列ですから、結果個数をs.lengthで参照して、s[idx]で値を取り出します。
32 request.getParameterNames()で、飛んできたパラメータ名の一覧を取得します。結果は、配列ではなく、Enumerationで返ってくるので、nextElemet()で順次データを取得します。このとき、(String)のキャストを忘れずに。
35 request.getParameterValues()でパラメータ値を取得しています。Line21と同様です。
50 request.getHeader()でRefererのURLを取得しています。

Labo表紙へ戻ります
ホームへ戻ります

Copyright(C) 2000, S.Terada, All rights reserved.