| 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を取得しています。 |
Copyright(C) 2000, S.Terada, All rights reserved.