ヘッダーをスキップ

Oracle Containers for J2EE JavaServer Pages開発者ガイド
10g(10.1.3.1.0)

B31860-01
目次
目次
索引
索引

戻る 次へ

5 OC4JにおけるJSPの変換

この章では、JSPページをJavaサーブレット・コードに変換する、OC4J内部のJSPトランスレータの操作について説明します。次の各項では、JSPトランスレータの全般的な機能について、Oracle Application Serverでのオンデマンド変換の動作を中心に説明します。

生成されるコードの機能

OC4JのJSPトランスレータは、JSPページ実装クラスの標準Javaコードを生成します。このクラスは、基本的に、JSP機能が追加されたサーブレット・クラスです。

この項では、JSPトランスレータによってJSPソース(通常は.jspまたは.jspxファイル)から生成されるページ実装クラス・コードの一般的な機能について説明します。

ページ実装クラス・コードの機能

JSPトランスレータは、ページ実装クラスのサーブレット・コードを生成するとき、標準のプログラミング・オーバーヘッドの一部を自動的に処理します。オンデマンド変換モデルと事前変換モデルの両方について、生成されたコードには、自動的に次の機能が含まれます。

静的なテキスト用のメンバー変数

ページ実装クラスのサービス・メソッドの_jspService()には、JSPページの静的なテキストを出力するための出力文(out.print()または暗黙的なoutオブジェクトにある同等のコール)が含まれます。JSPトランスレータは、静的なテキスト自体をページ実装クラス内の一連のメンバー変数に格納します。サービス・メソッドのout.print()文は、テキストを出力するために、これらのメンバー変数の属性を参照します。


注意

  • OC4JのJSPトランスレータは、静的なテキストをJavaリソース・ファイルに必要に応じて格納できます。これは、大量の静的なテキストを含むページの場合にメリットがあります。「大量の静的なコンテンツまたはタグ・ライブラリの使用の管理」を参照してください。この機能は、オンデマンド変換の場合はJSP external_resource構成パラメータ、事前変換の場合はojspc -extresフラグを介してリクエストできます。

  • external_resourceパラメータは、Oracle Containers for J2EE 10g(10.1.3.1.0)では推奨されていません。

 

出力名に関する一般規則

JSPトランスレータは、一貫した一連の規則に従って、出力クラス、パッケージ、ファイルおよびディレクトリのネーミングを行います。ただし、この一連の規則と他の実装の詳細は、リリースによって変更される場合があります。

しかし、JSPページのベース名に特殊文字が含まれていなければ、ベース名がそのまま出力クラス名とファイル名に含まれるという点は、変更されません。たとえば、MyPage23.jspを変換すると、文字列「MyPage23」は常に、ページ実装クラス名、Javaソース・ファイル名およびクラス・ファイル名の一部になります。

ベース名の前にはアンダースコア(_)が付きます。MyPage23.jspを変換すると、ページ実装クラスの_MyPage23がソース・ファイルの_MyPage23.javaに作成され、_MyPage23.classにコンパイルされます。

同様に、Javaパッケージ名の作成でパス名が使用されている場合は、そのパスの各コンポーネントの前にアンダースコアが付きます。たとえば、/jspdir/myapp/MyPage23.jspを変換すると、_MyPage23クラスは次のパッケージ内に含まれます。

_jspdir._myapp

パッケージ名は、出力の.javaファイルと.classファイルのディレクトリの作成で使用されるため、出力ディレクトリ名にもアンダースコアが付きます。たとえば、webapp/testというディレクトリにあるJSPページを変換すると、JSPトランスレータは、デフォルトで、ページ実装クラス・ソースに対してwebappdeployment/_pages/_testというディレクトリを作成します。「生成されるファイルとその格納場所」で説明するように、すべての出力ディレクトリは、標準の_pagesディレクトリの下に作成されます。

JSPページ名またはパス名に特殊文字を使用している場合、JSPトランスレータは、出力クラス名、パッケージ名およびファイル名に不正なJava特殊文字が含まれていないことを確認します。

たとえば、My-name_foo2.jspを変換すると、_My_2d_name__foo2という名前のクラスがソース・ファイルの_My_2d_name__foo2.javaに作成されます。ハイフンは、英数字の文字列に変換されます。(「foo2」の前には追加のアンダースコアも挿入されます。)

この場合、JSPページ名の英数字部分のみが、出力のクラス名とファイル名にそのまま含まれます。この例では、「My」、「name」または「foo2」が含まれます。

.jspxファイルの場合に生成されるソース・ファイルとクラス・ファイルの名前も同様ですが、名前には_jspxが追加されます。たとえば、MyPage.jspを変換すると、ソース・ファイルが_MyPage_jspx.javaとなり、これが_MyPage_jspx.classにコンパイルされます。

これらの規則の例は、この章で後述します。

生成されるパッケージとクラスの名前

JSP仕様には、JSPテキストを解析して変換するための統一プロセスが定義されていますが、生成されるクラスの命名方法は説明されていません。クラスの命名方法は、各JSP実装によって異なります。

この項では、変換時にコードを生成するとき、OC4JのJSPトランスレータが行うパッケージ名とクラス名の作成方法について説明します。


注意

OC4JのJSPトランスレータが出力クラス、パッケージおよびファイルのネーミングで使用する一般規則については、「出力名に関する一般規則」を参照してください。 


パッケージのネーミング

オンデマンド変換の場合は、ユーザーがJSPページのリクエスト時に指定するURLパス(具体的には、ドキュメント・ルートまたはアプリケーション・ルートに対して相対的なパス)によって、生成されるページ実装クラスのパッケージ名が決定します。URLパス内の各ディレクトリは、パッケージ階層のレベルを表します。

ただし、生成されるパッケージ名は、URL内の文字の大小に関係なく、常に小文字になります。

次のURLの例を考えてみます。

http://host:port/HR/expenses/login.jsp

この結果、現行のOC4JのJSP実装における、生成されたコードのパッケージ仕様は次のとおりです。

package _hr._expenses;

(実装の詳細は、今後のリリースで変更される場合があります。)

JSPページがアプリケーション・ルート・ディレクトリにある場合、パッケージ名は生成されません。この場合のURLは、次のとおりです。

http://host:port/login.jsp
クラスのネーミング

.jspファイルのベース名によって、生成されるコード内のクラス名が決定します。

次のURLの例を考えてみます。

http://host:port/HR/expenses/UserLogin.jsp

現行のOC4JのJSP実装における、生成されたコードのクラス名は次のとおりです。

public class _UserLogin extends ...

(実装の詳細は、今後のリリースで変更される場合があります。)

ユーザーがURLに指定する文字は、実際の.jspファイル名と大/小文字が一致する必要があります。たとえば、実際のファイル名がUserLogin.jspまたはuserlogin.jspである場合、エンド・ユーザーは、それぞれの名前をそのまま指定できますが、実際のファイル名がUserLogin.jspの場合、userlogin.jspは指定できません。

現在のトランスレータは、ファイル名の大/小文字に従ってクラス名の大/小文字を区別しています。次に例を示します。

クラス名の大/小文字を区別する場合は、それに従って.jspファイル名を付ける必要があります。ただし、ページ実装クラスはエンド・ユーザーに表示されないため、通常は問題になりません。

生成されるファイルとその格納場所

この項では、オンデマンド変換の場合にJSPトランスレータで生成されるファイルとその格納場所について説明します。(プリコンパイルの場合は、ojspcによるファイルの格納方法が異なり、固有の関連オプションがあります。詳細は、第4章「ojspcによるJSPページのプリコンパイル」を参照してください。)


注意

出力クラス、パッケージおよびファイルのネーミングで使用される一般規則については、「出力名に関する一般規則」を参照してください。 


JSPトランスレータで生成されるファイル

ファイル名の例では、変換されるファイルの名前として、Foo.jspを使用します。

ソース・ファイル

バイナリ・ファイル

JSPトランスレータの出力ファイルの格納場所

JSPトランスレータは、生成された出力ファイルを_pagesディレクトリに格納します。このディレクトリは、JSPキャッシュ・ディレクトリの下に作成されます。JSPキャッシュ・ディレクトリは、global-web-application.xmlファイルまたはアプリケーションのorion-web.xmlファイルの<orion-web-app>要素のjsp-cache-directory属性に指定されます。jsp-cache-directoryのデフォルトの./persistence値を想定している場合は、一般的に、次の場所が基本になります。

ORACLE_HOME/j2ee/home/app-deployment/app-name/web-app-name/persistence/_pages/...

スタンドアロンOC4Jでは、次の場所がOC4Jがインストールされた場所に対して相対的になります。

j2ee/home/app-deployment/app-name/web-app-name/persistence/pages/...

次の点に注意してください。

_pagesディレクトリ下のパスは、アプリケーション・ルート・ディレクトリ下の.jspファイルのパスによって決まります。

たとえば、スタンドアロンOC4Jで、スタンドアロンOC4JのデフォルトのWebアプリケーション・ディレクトリの下のexamples/jspサブディレクトリにあるwelcome.jspページについて考えてみます。このページへのパスは次のようになり、OC4Jがインストールされた場所に対して相対的です。

j2ee/home/default-web-app/examples/jsp/welcome.jsp

デフォルトのアプリケーション・デプロイ・ディレクトリの場合、JSPトランスレータは、出力ファイル(_welcome.javaおよび_welcome.class)を次のディレクトリに格納します。

j2ee/home/application-deployments/default/defaultWebApp/persistence/_pages/_examples/
_jsp

.jspソース・ファイルは、アプリケーション・ルート・ディレクトリ下のexamples/jspサブディレクトリに格納されているため、JSPトランスレータは、パッケージ名として_examples._jspを生成し、出力ファイルを_pagesディレクトリ下の_examples/_jspサブディレクトリに格納します。


重要

生成された出力ファイルの格納場所と出力ファイル名での「_」の使用など、実装の詳細は、今後のリリースで変更される場合があります。 


Oracle JSPのグローバル・インクルード

OC4JのWebコンテナでは、グローバル・インクルードと呼ばれる機能が提供されています。この機能によって、仮想のJSP includeディレクティブを使用して、指定のディレクトリ内またはディレクトリ下のJSPページに静的にインクルードする1つ以上のファイルを指定できます。変換時に、Webコンテナは、インクルード・ファイルとディレクトリをページに指定する構成ファイル/WEB-INF/ojsp-global-include.xmlを検索します。

この機能は、以前のOracle JSPリリースでglobals.jsaまたはtranslate_params機能を使用していたアプリケーションを移行する場合に、特に便利です。

Oracleのグローバル・インクルード機能は、JSP 2.0仕様以前のものです。この機能は仕様に盛り込まれたため、移植性を考慮して、新規開発ではJSP仕様のメカニズムを使用することを強くお薦めします。

将来のリリースではOracleのグローバル・インクルード機能が推奨されなくなる可能性があります。

グローバルにインクルードされたファイルは、次の場合などに使用できます。

グローバル・インクルードのファイルと例

この項では、ojsp-global-include.xmlファイルの概要およびいくつかの例を示します。

ojsp-global-include.xmlファイル

ojsp-global-include.xmlファイルは、インクルードするファイルの名前、ファイルのインクルード先(JSPページの最上部または最下部)、およびグローバル・インクルードを適用するJSPページの場所を指定します。この項では、ojsp-global-include.xmlの要素について説明します。

<ojsp-global-include>

ojsp-global-include.xmlファイルのルート要素です。属性はありません。

<ojsp-global-include>のサブ要素は次のとおりです。

<include>
<include ... >

<ojsp-global-include><include>サブ要素を使用して、インクルードするファイル、およびインクルード先がJSPページの最上部かまたは最下部かを指定します。

<include>のサブ要素は次のとおりです。

<into>

<include>の属性は次のとおりです。

<into ... >

<include>のこのサブ要素を使用して、指定ファイルのインクルード先JSPページの場所(ディレクトリ、場合によってはサブディレクトリ)を指定します。この要素にサブ要素はありません。

<into>の属性は次のとおりです。

グローバル・インクルードの例

この項では、グローバル・インクルードの例を示します。

例: ヘッダー/フッター

次のojsp-global-include.xmlファイルの例を考えてみます。

<?xml version="1.0" standalone='no'?>
<!DOCTYPE ojsp-global-include SYSTEM 'ojsp-global-include.dtd'>

<ojsp-global-include>
  <include file="/header.html">
     <into directory="/dir" />
  </include>
  <include file="/footer.html" position="bottom">
     <into directory="/dir" subdir="false" />
     <into directory="/dir/part/" subdir="false" />
  </include>
  <include file="/footer2.html" position="bottom">
     <into directory="/dir/part2/" subdir="false" />
  </include>
</ojsp-global-include>

この例には、次の3つの目的があります。

例: translate_paramsと同等のコード

次のojsp-global-include.xmlファイルの例を考えてみます。

<?xml version=".0" standalone='yes'?>
<!DOCTYPE ojsp-global-include SYSTEM 'ojsp-global-include.dtd'>

<ojsp-global-include>
  <include file="/WEB-INF/nls/params.jsf">
     <into directory="/" />
  </include>   
</ojsp-global-include>

params.jsfに、次のコードが含まれていると仮定します。

<% request.setCharacterEncoding(response.getCharacterEncoding()); %>

params.jsfファイル(基本的に、setCharacterEncoding()メソッド・コール)は、アプリケーション・ルート・ディレクトリ内またはその下にあるJSPページの最上部にインクルードされます。つまり、このファイルは、アプリケーション内のJSPページにインクルードされます。結果は、このディレクトリ内またはその下にある各.jspファイルのページの最上部に次のincludeディレクティブがある場合と同じになります。

<%@ include file="/WEB-INF/nls/parms.jsf" %>

戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引