JRun では、Java サーブレットと JSP の両方を使用してサーバー側 Java アプリケーションを作成できます。JSP は JRun によってサーブレットに変換されるため、ネイティブ Java サーブレットに使用できるオブジェクトの多くは、本質的に JSP にも使用できます。
これらのトピックについては、次のページで説明します。上記オブジェクトの使用方法の詳細については、本書の後のセクションで説明します。
サーブレットは、HTTP 要求がサーブレットを直接的に Java サーブレットとして参照した場合、または間接的に JSP ファイルとして参照した場合に起動されます。サーブレット内の最も一般的なタスクは、HTTP 要求に格納された情報にアクセスし、その情報を処理してから、結果を HTTP 応答の一部としてクライアントに返すことです。
HTTP 要求には、クライアントからサーブレットに送信された情報が含まれています。たとえば、サーブレットがフォームによって起動された場合は、処理を行う前に、そのサーブレットは要求に格納されているフォーム データにアクセスする必要があります。フォーム データには、ユーザ、データベースに書き込まれた登録情報、またはユーザのショッピング カートに追加された製品情報の検証に使われるログイン情報が含まれています。
javax.servlet.HttpServletRequest
オブジェクトを使用して、HTTP 要求情報にアクセスします。このオブジェクトは、要求内に格納された情報のアクセスに使用できるメソッドを定義します。
request
を使用します。この request
オブジェクトを使用すると、javax.servlet.HttpServletRequest
オブジェクトの場合と同じメソッドを使用できます。サーブレットは、HTTP 応答を構築し、その応答をクライアントに返すことによって、要求に応じます。サーブレット内で、HTTP 応答にアクセスし、クライアントに返された応答内の情報を書き込みます。
javax.servlet.HttpServletResponse
オブジェクトを使用します。それは、応答内に保存された情報にアクセスするメソッドを定義します。
response
を使用します。この response
オブジェクトを使用すると、javax.servlet.HttpServletResponse
オブジェクトの場合と同じメソッドを使用できます。HTTP 応答には、クライアントへの結果の返送に使用する出力ストリームが含まれます。
サーブレットで、要求クライアントにダイナミック コンテンツを返すことができます。出力は、サーブレットが計算する情報またはサーブレットに渡された情報に基づいて生成されます。たとえば、サーブレットは渡されたフォーム属性 (request
オブジェクトを介してアクセスされたもの) を使用して、フォーマットされたデータベース データを戻すことができます。一方、アプリケーションにユーザ プリファレンスを維持するメソッドがある場合は、格納されているプリファレンスに基づき、サーブレットでブラウザの表示色を設定できます。
javax.servlet.HttpServletResponse
オブジェクトの PrintWriter
、または ServletOutputStream
インターフェイスを使用します。これらのインターフェイスには、println
メソッドが含まれています。このメソッドは、出力ストリームへの書き込みを行うためのものです。
out
が使用されます。out
オブジェクトにも、println
メソッドが含まれています。例外とは、サーブレット内で検出されるエラーのことです。例外は、JRun によって JSP が Java クラス ファイルに変換されるとき、またはサーブレットが実行されるときに発生する可能性があります。
javax.servlet.ServletException
のインスタンスで表されます。
exception
オブジェクトを使用して例外を表します。
JSP ページの pageContext
オブジェクトは、情報を JSP にローカルに格納するメカニズムを提供します。JRun では、ページの要求ごとに新しい pageContext
オブジェクトが作成されます。このオブジェクトは、ページが起動すると作成され、ページが終了すると削除されます。pageContext
オブジェクトのメソッドを使用すると、JSP の情報にアクセスしたり、ほかのアクションを実行できます。
Java サーブレットには、これに相当するオブジェクトはありません。
HTTP はステートレス プロトコルです。Web サーバーは、要求を受け取って応答を返すと、クライアントとの接続を終了します。Web サーバーにはクライアントの情報は維持されません。そのため、同じクライアントから別の要求がきても、自動的に判断することはできません。Web サイトからクライアントやナビゲーションを自動追跡できないことが、Web サイトにおける複雑なトランザクションの実行を困難にしています。
ただし、JRun には session
オブジェクトがサポートされており、これを使用すれば、Web サーバーとの対話全体を通してユーザを追跡できます。session
オブジェクトで、ショッピングするユーザを追跡し、登録情報や優先情報を送ることができます。サイトに接続するたびに自由に再入力できます。
session
オブジェクトは、ユーザが Web サイトに接続している間、情報の格納および検索場所を 1 つ提供します。
JRun を使用してセッションを実装する場合は、クライアントのブラウザにクッキーがサポートされ、使用可能になっている必要があります。ブラウザにクッキーがサポートされていない場合、またはクライアントでクッキーが使用不能な場合は、JRun でセッションを追跡することはできません。このような場合は、別のメソッドを使用してユーザを追跡する必要があります。
javax.servlet.http.HttpSession
オブジェクトを使用してセッション情報にアクセスします。
session
が使用されます。 コンテキスト オブジェクトを使用すると、アプリケーション情報を格納したり、アプリケーションのさまざまなコンポーネント間で情報を共有できます。
たとえば、アプリケーションが複数のサーブレット (Java で書かれたものと JSP として書かれたもの)、HTML タグ、およびデータベースで構成されているとします。これらのアプリケーション コンポーネント間で情報をやり取りするには、アプリケーション コンテキストを使用して、その情報を格納し、検索できます。コンテキスト オブジェクトを介して使用できる情報には、次のものがあります。
また、アプリケーション コンテキストには、Web サーバーへのアプリケーションの実装に伴って、アプリケーション情報が格納されます。この情報には、アプリケーション コンポーネントのファイルの位置、サーブレットの初期化パラメータ、アプリケーションのバージョン情報など、アプリケーション固有の情報が含まれています。
javax.servlet.ServletContext
オブジェクトを使用します。
application
を使用します。 JRun は、初期化時にサーブレットに設定情報を渡します。設定情報には、初期化パラメータを示す名前/値ペア、およびサーブレットが実行されるコンテキストを示す ServletContext オブジェクトが含まれています。
javax.servlet.ServletConfig
オブジェクトを使用します。
config
を使用します。 JRun では、サーブレットを含む Web アプリケーションを公開できます。JRun には、Web ARchive (WAR) ファイルからのアプリケーションの公開がサポートされています。これらのファイルは、アプリケーションを構成するすべてのファイルとそのディレクトリ構造が格納されたアプリケーション配布ファイルの圧縮ファイルです。Web アプリケーションのパッケージ化と公開の詳細については、第 34 章を参照してください。