目次へ

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ページが再コンパイルされた場合に、初期化されるのは構わない。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp