- 1.1. JSPとは
- 1.2. JSPの動作
- 1.3. ディレクティブとスクリプト
1.3. ディレクティブとスクリプト
この節では基本的な文法について説明します。詳細については、後の章で説明していきます。
<%@ %>で囲まれたタグを「ディレクティブ」と呼びます。ディレクティブとはJSPの宣言のようなもので、コンテナに対してどのようにこのページを処理するか指示するものです。代表的なディレクティブに「page」ディレクティブがあり、JSPページの先頭には必ずこのディレクティブが現れます。以下はその例です。
<%@ page contentType="text/html; charset=EUC-JP" import="java.util.Date" %>
pageディレクティブは幾つか属性を持っているのですが、ここではサンプルにある2つだけ説明します。「contentType」属性はこのページのMIMEタイプを指し示します。「charset」はServletと同じく、JSPページが何らかの出力を行う際の文字コードを示すものです。例の場合は「EUC-JP」に変換されることになります。1つ注意しなければならないのは、静的なHTMLの部分については変換の対象とならないという点です。ここで「EUC-JP」と指定したJSPページは、やはり「EUC-JP」コードで作成しなければなりません。
「import」はJavaプログラムの「import」文と同じです。JSPページ内で使用されているクラスのパッケージ名を指し示すものです。
<%! %>、<% %>、<%= %>で囲まれたタグを「スクリプト」と呼びます。スクリプトはJSPページのプログラム部分です。これらのタグで囲まれていない部分は、そのまま出力されます。これら3つのタグ、それぞれについて説明していきます。
<%! %>で囲まれた部分はJSPページからServletプログラムに変換された際、クラスの宣言部に記述されるものです。逆にこのタグ以外の部分は、「_jspService」という1つのメソッド内に記述されます。このメソッドはJSP版の「service」メソッドです。
<%! %>タグで宣言された変数はServletのインスタンス変数に、メソッドはインスタンスメソッドになります。以下のサンプルでは、「count」というインスタンス変数と、「sum」というメソッドが定義されます。
<%! int sum(int start,int end){ int sum=0; for(int i=start;i<=end;i++){ sum+=i; } return(sum); } int count=0; %>
<% %>で囲まれた部分は、JSPスクリプトとして処理する部分を表します。プログラム内で使用する変数もこのタグ内で宣言します。<%! %>で宣言する変数と違い、一時変数という扱いになるので注意してください。下記のページでは<br>タグが10回出力されます。
<% for(int i=0;i<10;i++){ %> <br> <% } %>
<%= %>で囲まれた部分は、スクリプトとして処理を行い、その結果を出力します。例えば下記プログラムの場合は1から9の数字を出力する事になります。<% %>は処理を行うだけであるのに対し、<%= %>は出力をするという点が違います。
<% for(int i=0;i<10;i++){ %> <%=i %><br> <% } %>
(実習課題3)
以下のJSPページを作成しなさい。
- <%! %>タグと<% %>タグ内に変数を宣言し、ページが処理される度に値を1ずつ増やす事。
- その値を<%= %>タグで出力すること。
変換されてできたサーブレットプログラムと表示される値の関係を確認する事。
(実習課題4)
以下のJSPページを作成しなさい。
- 要求がある毎に、テーブルの行および列が増加していくページ。つまり最初に要求があった場合は1行1列、10回目の要求があった場合には10行10列のページが表示されるようにする事。
- JSPページが再コンパイルされた場合に、初期化されるのは構わない。