JavaServer Pages の作成

Web アプリケーションのコンポーネントとして JSP を含めることができます。JSP は、HTML と組み込まれたスクリプト コードを含んでいます。JSP は、一般的に、Web クライアントにダイナミック コンテンツを配布するために使用します。

JSP は「処理中に」Java サーブレットに変換されます。JSP にはファイル拡張子 .jsp が付けられます。JSP には次の要素の任意の組み合わせを含めることができます。


メモ

JSP アクションと JSP ディレクティブの構文は、JSP 仕様によって決定されます。JSP スクリプト コマンドの構文は、その JSP のために選択したスクリプト言語によって 異なります。この章のほとんどの例では Java を使用しますが、JavaScript の例も示し ています。


この章では、Allaire 社 の JavaServer Pages を紹介します。JSP の構文および JSP アクションと JSP ディレクティブの詳細については、第 8 章を参照してください。

JSP スクリプトの概要

スクリプトは、Web サーバーが実行する一連のコマンドです。たとえば、スクリプトは次のような処理を実行できます。

JSP はスクリプト言語を定義しません。JSP を使用して HTML およびスクリプト コードを含んでいるドキュメントを作成できます。スクリプト コードの言語としては、Java が多くの場合使用されますが、JavaScript を使用することもできます。

JRun は JSP を Java サーブレットに変換します。ページ変換の利点は、実際の Java サーブレットを作成する必要がないことです。JRun はこの複雑な作業を自動的に処理します。HTML についての一定の知識があれば、JSP を使用してアプリケーションを作成できます。しかし、Java サーブレットの柔軟性が必要な場合は、JSP 内からサーブレットAPI の全機能を使用できます。

はじめての JSP ページの作成

このセクションでは、初めての JSP を作成します。これは Hello World サーブレットを実装します。

  1. 新しいテキスト ファイルを作成して、次の行を入力します。
    <html>
    <head>
    <title>Greetings</title>
    </head>
    <body>
    <h1>Hello World!</h1>
    </body>
    </html>
    
  2. ファイルを Web サーバーのドキュメント ルートに保存し、greeting.jsp という名前を付けます。

    このディレクトリとして、たとえば c:¥Inetpub¥wwwroot や JRun Web サーバーを 使用している場合は <JRun home dir>¥servers¥default¥default-app を指定し ます。ただし、<JRun home dir> は JRun のホーム ディレクトリに対応し、 default-app は既定の JRun Web アプリケーションです。

  3. ブラウザで適当な URL、たとえば http://<your-host>/greeting.jsp を使用してドキュメントを要求します。

    作成されたドキュメントは単純な HTML ドキュメントで、Java コードは含まれて いません。このドキュメントの特徴は、ファイル拡張子が .jsp であることです。 既定では、JRun は拡張子 .jsp が付いているファイルを認識し、それを Java サーブ レットに変換します。この操作は、ページを要求したクライアントからはまったく 見えません。

    JRun が .jsp 以外の拡張子も JSP として認識できるようにマッピングを設定でき ます。詳細については、『JRun セットアッ プ ガイド』を参照してください。

  4. greeting.jsp を変更して、組み込まれた Java コードを使用して簡単なループ処理を実行してみましょう。

    greeting.jsp ファイルを次のように編集します。

    <html>
    <head>
    <title>Greetings</title>
    </head>
    <body>
    <% 
      for (int i=0; i < 5; i++) out.println("<h1>Hello World!</h1>"); 
    %>
    </body>
    </html>
    

    ファイルを保存し、もう一度、ブラウザからこのファイルを要求します。JRun は <% %> タグに囲まれたスクリプト コードを認識します。この例では、スクリプト コードは Java です。このループにより、JSP out オブジェクトを使用してブラウザ に「Hello World!」というメッセージが 5 回出力されます。

    out オブジェクトは、JSP 内で利用できる多くのオブジェクトの 1 つです。この オブジェクトを使用して、出力をクライアントに返します。JSP 内で利用できる すべてのオブジェクトの説明については、第 9 章を参照してください。

JRun では JSP 内で Java 以外のスクリプト言語もサポートします。これらのファイル内で JavaScript を使用できます。一般的には、JavaScript は実行時に解釈されます。しかし、JRunは、JavaScript をコンパイルすることによってサーブレットのパフォーマンスを向上させます。

前の例のコードを JavaScript で表すと、次のようになります。

...
<%@  page language = "javascript" %>

<% 
  var i;
  for (i=0; i < 5; i++) out.println("<h1>Hello World!</h1>"); 
%>
...

この例の最初の行は、page ディレクティブを使用してスクリプト言語を JavaScript に設定します。JSP の既定の言語は Java なので、このステートメントは必須です。


メモ

1 つの JSP 内で複数のスクリプト言語を使用することはできません。ページのスクリ プト言語を定義した後、それを変更することはできません。


複数の HTML/Java ブロック

JSP を作成するとき、Java コードと HTML のブロックを組み合わせることができます。JRun は両方のタイプの入力を処理できます。以下はその例です。

<html>
<head><title>Mix me up</title></head>
<body>
<p>
<%
  out.println ("This list is generated by Java code");
%>
<h1> A list generated by Java</h1>
<ul>
<%
  for (int i = 1; i < 10; i++) {
    out.println ("<li>" + i);
  }
%>
</ul>
</body>
</html>

この例の 2 番目のスクリプト コードのブロックは、変数 i に保存されているリスト カウントと、それぞれの出力行が HTML リストの一部であることを示す HTML タグを出力します。この例は、JSP の最も重要な機能の 1 つを示しています。それは、スクリプト内で、クライアントに返す HTML テキストを生成することです。

スクリプト内から HTML テキストを出力する主な目的の 1 つは、動的な HTML 出力を作成することです。動的な出力は、クライアントの名前や優先度のような、ページに渡された情報によって条件を付けるか、またはクッキーやその他のソースから取得した情報によって制御できます。

JSP から Java サーブレットへの変換

JSP を Java サーブレットに変換するプロセスをページ変換と言います。最初に JSP が要求されると、JRun はファイルを解析して、Java ソース コード ファイルを出力します。Java ソース コード ファイルはサーブレット クラス ファイルにコンパイルされます。次に、そのサーブレット クラス ファイルがロードされ、実行されます。

次の図は、JRun が JSP の要求を受け取ったときに実行する手順を示しています。

次の手順は、JSP が要求されたときに JRun が実行する動作を示しています。

  1. JRun は JSP (.jsp ファイル) を解析し、Java ソース コード (.java ファイル) を作成します。
  2. Java ソース コードが Java サーブレット クラス (.class ファイル) にコンパイルされます。
  3. Java サーブレットの .class ファイルが Web サーバー上のメモリにロードされます。
  4. サーブレットが実行されます。

    サーブレットからのすべての出力がクライアントに返されます。JSP ファイルの 既定の出力には text/html; charset=ISO-8859-1 タイプがあります。このタイプ では、クライアントに直接送信できるように出力を設定します。

次回に JSP が要求されると、JSP が最後に変換されて以降変更されていない場合は、JRun は手順 4 だけを実行します。なぜなら、最初の要求の後サーブレットがメモリに残っているからです。既定では、JSP ファイルが最後の変換以降に変更された場合は、再変換が行われます。

公開されたアプリケーションで、JSP の自動変換を禁止することもできます。JSP の変換を無効にするには、JRun 管理コンソールを使用します。変換の無効化の詳細については、第 10 章を参照してください。

自動変換を無効にしている場合でも、システム コマンド ラインから JSPC コンパイラを起動することによって JSP を変換できます。この場合、JSPC コンパイラを使用して JSP を .class ファイルに変換し、新しい .class ファイルをアプリケーションのために適当な場所にコピーし、古い .class ファイルを置換します。