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 章を参照してください。
スクリプトは、Web サーバーが実行する一連のコマンドです。たとえば、スクリプトは次のような処理を実行できます。
JSP はスクリプト言語を定義しません。JSP を使用して HTML およびスクリプト コードを含んでいるドキュメントを作成できます。スクリプト コードの言語としては、Java が多くの場合使用されますが、JavaScript を使用することもできます。
JRun は JSP を Java サーブレットに変換します。ページ変換の利点は、実際の Java サーブレットを作成する必要がないことです。JRun はこの複雑な作業を自動的に処理します。HTML についての一定の知識があれば、JSP を使用してアプリケーションを作成できます。しかし、Java サーブレットの柔軟性が必要な場合は、JSP 内からサーブレットAPI の全機能を使用できます。
   このセクションでは、初めての JSP を作成します。これは Hello World サーブレットを実装します。
<html> <head> <title>Greetings</title> </head> <body> <h1>Hello World!</h1> </body> </html>
greeting.jsp という名前を付けます。 このディレクトリとして、たとえば c:¥Inetpub¥wwwroot や JRun Web サーバーを
使用している場合は <JRun home dir>¥servers¥default¥default-app を指定し
ます。ただし、<JRun home dir> は JRun のホーム ディレクトリに対応し、
default-app は既定の JRun Web アプリケーションです。
作成されたドキュメントは単純な HTML ドキュメントで、Java コードは含まれて
いません。このドキュメントの特徴は、ファイル拡張子が .jsp であることです。
既定では、JRun は拡張子 .jsp が付いているファイルを認識し、それを Java サーブ
レットに変換します。この操作は、ページを要求したクライアントからはまったく
見えません。 
JRun が .jsp 以外の拡張子も JSP として認識できるようにマッピングを設定でき
ます。詳細については、『JRun セットアッ
プ ガイド』を参照してください。
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 内で複数のスクリプト言語を使用することはできません。ページのスクリ プト言語を定義した後、それを変更することはできません。 | 
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 が要求されると、JRun はファイルを解析して、Java ソース コード ファイルを出力します。Java ソース コード ファイルはサーブレット クラス ファイルにコンパイルされます。次に、そのサーブレット クラス ファイルがロードされ、実行されます。
次の図は、JRun が JSP の要求を受け取ったときに実行する手順を示しています。
次の手順は、JSP が要求されたときに JRun が実行する動作を示しています。
jsp ファイル) を解析し、Java ソース コード (.java ファイル) を作成します。
class ファイル) にコンパイルされます。class ファイルが Web サーバー上のメモリにロードされます。サーブレットからのすべての出力がクライアントに返されます。JSP ファイルの 既定の出力には text/html; charset=ISO-8859-1 タイプがあります。このタイプ では、クライアントに直接送信できるように出力を設定します。
次回に JSP が要求されると、JSP が最後に変換されて以降変更されていない場合は、JRun は手順 4 だけを実行します。なぜなら、最初の要求の後サーブレットがメモリに残っているからです。既定では、JSP ファイルが最後の変換以降に変更された場合は、再変換が行われます。
公開されたアプリケーションで、JSP の自動変換を禁止することもできます。JSP の変換を無効にするには、JRun 管理コンソールを使用します。変換の無効化の詳細については、第 10 章を参照してください。
   自動変換を無効にしている場合でも、システム コマンド ラインから JSPC コンパイラを起動することによって JSP を変換できます。この場合、JSPC コンパイラを使用して JSP を .class ファイルに変換し、新しい .class ファイルをアプリケーションのために適当な場所にコピーし、古い .class ファイルを置換します。