サーブレットと JSP ページ

JRun では、Java サーブレットと JSP の両方を使用してサーバー側 Java アプリケーションを作成できます。JSP は JRun によってサーブレットに変換されるため、ネイティブ Java サーブレットに使用できるオブジェクトの多くは、本質的に JSP にも使用できます。

これらのトピックについては、次のページで説明します。上記オブジェクトの使用方法の詳細については、本書の後のセクションで説明します。

HTTP 要求と応答

サーブレットは、HTTP 要求がサーブレットを直接的に Java サーブレットとして参照した場合、または間接的に JSP ファイルとして参照した場合に起動されます。サーブレット内の最も一般的なタスクは、HTTP 要求に格納された情報にアクセスし、その情報を処理してから、結果を HTTP 応答の一部としてクライアントに返すことです。

HTTP 要求には、クライアントからサーブレットに送信された情報が含まれています。たとえば、サーブレットがフォームによって起動された場合は、処理を行う前に、そのサーブレットは要求に格納されているフォーム データにアクセスする必要があります。フォーム データには、ユーザ、データベースに書き込まれた登録情報、またはユーザのショッピング カートに追加された製品情報の検証に使われるログイン情報が含まれています。

HTTP 要求情報には、次のようにアクセスします。

サーブレットは、HTTP 応答を構築し、その応答をクライアントに返すことによって、要求に応じます。サーブレット内で、HTTP 応答にアクセスし、クライアントに返された応答内の情報を書き込みます。

HTTP 応答情報には、次のようにアクセスします。

HTTP 応答には、クライアントへの結果の返送に使用する出力ストリームが含まれます。

クライアントへの結果の返送

サーブレットで、要求クライアントにダイナミック コンテンツを返すことができます。出力は、サーブレットが計算する情報またはサーブレットに渡された情報に基づいて生成されます。たとえば、サーブレットは渡されたフォーム属性 (request オブジェクトを介してアクセスされたもの) を使用して、フォーマットされたデータベース データを戻すことができます。一方、アプリケーションにユーザ プリファレンスを維持するメソッドがある場合は、格納されているプリファレンスに基づき、サーブレットでブラウザの表示色を設定できます。

HTTP 応答を使用して、次のように情報を戻します。

例外処理

例外とは、サーブレット内で検出されるエラーのことです。例外は、JRun によって JSP が Java クラス ファイルに変換されるとき、またはサーブレットが実行されるときに発生する可能性があります。

例外は、次のように表現されます。

ページ コンテキスト情報の維持

JSP ページの pageContext オブジェクトは、情報を JSP にローカルに格納するメカニズムを提供します。JRun では、ページの要求ごとに新しい pageContext オブジェクトが作成されます。このオブジェクトは、ページが起動すると作成され、ページが終了すると削除されます。pageContext オブジェクトのメソッドを使用すると、JSP の情報にアクセスしたり、ほかのアクションを実行できます。

Java サーブレットには、これに相当するオブジェクトはありません。

セッションの処理

HTTP はステートレス プロトコルです。Web サーバーは、要求を受け取って応答を返すと、クライアントとの接続を終了します。Web サーバーにはクライアントの情報は維持されません。そのため、同じクライアントから別の要求がきても、自動的に判断することはできません。Web サイトからクライアントやナビゲーションを自動追跡できないことが、Web サイトにおける複雑なトランザクションの実行を困難にしています。

ただし、JRun には session オブジェクトがサポートされており、これを使用すれば、Web サーバーとの対話全体を通してユーザを追跡できます。session オブジェクトで、ショッピングするユーザを追跡し、登録情報や優先情報を送ることができます。サイトに接続するたびに自由に再入力できます。

session オブジェクトは、ユーザが Web サイトに接続している間、情報の格納および検索場所を 1 つ提供します。

JRun を使用してセッションを実装する場合は、クライアントのブラウザにクッキーがサポートされ、使用可能になっている必要があります。ブラウザにクッキーがサポートされていない場合、またはクライアントでクッキーが使用不能な場合は、JRun でセッションを追跡することはできません。このような場合は、別のメソッドを使用してユーザを追跡する必要があります。

セッション情報には、次のようにアクセスします。

アプリケーション コンテキストの追跡

コンテキスト オブジェクトを使用すると、アプリケーション情報を格納したり、アプリケーションのさまざまなコンポーネント間で情報を共有できます。

たとえば、アプリケーションが複数のサーブレット (Java で書かれたものと JSP として書かれたもの)、HTML タグ、およびデータベースで構成されているとします。これらのアプリケーション コンポーネント間で情報をやり取りするには、アプリケーション コンテキストを使用して、その情報を格納し、検索できます。コンテキスト オブジェクトを介して使用できる情報には、次のものがあります。

また、アプリケーション コンテキストには、Web サーバーへのアプリケーションの実装に伴って、アプリケーション情報が格納されます。この情報には、アプリケーション コンポーネントのファイルの位置、サーブレットの初期化パラメータ、アプリケーションのバージョン情報など、アプリケーション固有の情報が含まれています。

アプリケーション情報には、次のようにアクセスします。

設定情報へのアクセス

JRun は、初期化時にサーブレットに設定情報を渡します。設定情報には、初期化パラメータを示す名前/値ペア、およびサーブレットが実行されるコンテキストを示す ServletContext オブジェクトが含まれています。

設定情報には、次のようにアクセスします。

アプリケーションの公開

JRun では、サーブレットを含む Web アプリケーションを公開できます。JRun には、Web ARchive (WAR) ファイルからのアプリケーションの公開がサポートされています。これらのファイルは、アプリケーションを構成するすべてのファイルとそのディレクトリ構造が格納されたアプリケーション配布ファイルの圧縮ファイルです。Web アプリケーションのパッケージ化と公開の詳細については、第 34 章を参照してください。