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
ファイルを置換します。