ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発
11g リリース1 (10.3.3)
B60993-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

5 JSPの作成と構成

次の項では、JSPを作成および構成する方法について説明します。

WebLogic JSPとJava EE

WebLogic JSPでは、Sun MicrosystemsのJSP 2.1仕様(http://java.sun.com/products/jsp/)をサポートしています。Java EEの主要なテーマは、開発の容易さです。プラットフォームのWeb層では、以下の2つの点で開発の容易さが大幅に向上しています。1つめは、プラットフォームにJavaServer Pages Standard Tag Library (JSTL)技術とJavaServer Faces技術が組み込まれていることです。2つめは、Java EEでのWebアプリケーション開発を非常に容易にする一連の機能(JavaServer Faces技術タグとJavaServer Pages (JSP)ソフトウェア・コードとの緊密な連携など)がすべてのWeb層技術で提供されることです。

Java Server Pages (JSP)の構成

Java Server Pages (JSP)ファイルをデプロイするには、Webアプリケーションのルート(またはルートの下のサブディレクトリ)に格納する必要があります。JSP構成パラメータは、WebLogic固有のデプロイメント記述子であるweblogic.xmljsp-descriptor要素の下位要素に定義します。これらのパラメータは次の機能を定義します。

これらの下位要素の詳細は、付録B「jsp-descriptor」を参照してください。

JSPのサーブレットとしての登録

JSPは、Java EE標準のデプロイメント記述子web.xmlservlet要素を使用して、サーブレットとして登録できます。web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります。サーブレット・コンテナは、既知のサーブレットのマップを保持します。このマップは、コンテナに対するリクエストを解決するために使われます。このマップにエントリを追加することを、サーブレットを「登録する」と言います。このマップへのエントリの追加は、web.xmlservlet-mappingエントリでservlet要素を参照することによって行います。

JSPはサーブレットの一種です。JSPの登録は、サーブレット登録の特別なケースです。通常、JSPは最初の呼出し時にJSPファイルの名前に基づいて暗黙的に登録されます。したがって、myJSPfile.jspファイルはmyJSPfile.jspとしてマッピング表に登録されます。次の例に示すように、JSPを暗黙的に登録することができます。次の例では、myJSPfile.jspという暗黙的な名前ではなく、/mainという名前を指定してJSPをリクエストしています。

次の例で、/mainを含むURLはmyJSPfile.jspを起動します。

<servlet>
     <servlet-name>myFoo</servlet-name>
     <jsp-file>myJSPfile.jsp</jsp-file>
</servlet>
<servlet-mapping>
     <servlet-name>myFoo</servlet-name>
     <url-pattern>/main</url-pattern>
</servlet-mapping>

JSPをサーブレットとして登録することによって、サーブレットに対して行うのと同様に、ロード順、初期化属性、およびセキュリティ・ロールをJSPに指定できます。

JSPタグ・ライブラリの構成

WebLogic Serverでは、カスタムJSPタグを作成および使用できます。カスタムJSPタグは、JSPページ内から呼び出すことができるJavaクラスです。カスタムJSPタグを作成するには、それらをタグ・ライブラリに登録して、それらの動作をタグ・ライブラリ記述子(TLD)ファイルに定義します。このTLDは、JSPが組み込まれているWebアプリケーションで使用できなければなりません。そのためには、Webアプリケーション・デプロイメント記述子にそのTLDを定義します。TLDファイルは、WebアプリケーションのWEB-INFディレクトリに格納してください。このディレクトリは、外部には公開されません。

Webアプリケーション・デプロイメント記述子には、タグ・ライブラリのURIパターンを定義します。このURIパターンは、JSPページのtaglibディレクティブの値と一致する必要があります。また、TLDの格納場所も定義します。たとえば、JSPページに次のtaglibディレクティブがあるとします。

<%@ taglib uri="myTaglib" prefix="taglib" %>

また、TLDがWebアプリケーションのWEB-INFディレクトリに格納されているとします。この場合、Webアプリケーション・デプロイメント記述子に次のエントリを作成します。

<jsp-config>
<taglib>
<taglib-uri>myTaglib</taglib-uri>
<tablig-location>WEB-INF/myTLD.tld</taglib-location>
</taglib>
</jsp-config>

タグ・ライブラリは、.jarファイルとしてもデプロイできます。

カスタムJSPタグ・ライブラリの作成については、Oracle WebLogic Server JSPタグ拡張のプログラミングを参照してください。

WebLogic Serverには、アプリケーションで使用できるカスタムJSPタグがいくつか付属しています。これらのタグを使用すると、キャッシング、問合せ属性ベースのフロー制御の効率化、およびオブジェクト・セットに対する反復処理の効率化を行うことができます。詳細は、次を参照してください。

ウェルカム・ファイルの構成

Webアプリケーション開発者は、Webアプリケーション・デプロイメント記述子内で、ウェルカム・ファイルと呼ばれる部分URIの順序付けされたリストを定義できます。このメカニズムの目的は、WebコンポーネントにマップされていないWAR内のディレクトリ・エントリに対応するURIに対するリクエストがあった場合に、コンテナがURIに付加するために使用する部分URIの順序付けされたリストを、デプロイヤが指定できるようにすることです。ユーザーは特定のファイル名を指定せずにURLを入力できるため、この機能によってサイトが使いやすくなります。


注意:

ウェルカム・ファイルは、JSP、静的ページ、またはサーブレットとすることができます。

ウェルカム・ファイルは、Webアプリケーション・レベルで定義します。サーバーが複数のWebアプリケーションのホストになっている場合は、Webアプリケーションごとに別個のウェルカム・ファイルを定義する必要があります。ウェルカム・ファイルは、web.xml内でwelcome-file-list要素を使用して定義します(web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります)。ウェルカム・ファイルの構成例を次に示します。

例5-1ウェルカム・ファイル例

<servlet>
  <servlet-name>WelcomeServlet</servlet-name>
  <servlet-class>foo.bar.WelcomeServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>WelcomeServlet</servlet-name>
  <url-pattern>*.foo</url-pattern>
</servlet-mapping>

<welcome-file-list>
  <welcome-file>/welcome.foo</welcome-file>
</welcome-file-list>

詳細は、http://java.sun.com/products/servlet/download.html#specsの9.10項を参照してください。

HTTPエラー・レスポンスのカスタマイズ

WebLogic Serverを構成すると、特定のHTTPエラーまたはJava例外が発生したときに、標準のWebLogic Serverエラー・レスポンス・ページを使用するかわりに、カスタムWebページなどのHTTPリソースを使って応答させることができます。

カスタム・エラー・ページは、Java EE標準のWebアプリケーション・デプロイメント記述子(web.xml)のerror-page要素で定義します(web.xmlファイルは、WebアプリケーションのWEB-INFディレクトリにあります)。

HTTPリクエストのエンコーディングの識別

WebLogic Serverは、HTTPリクエストに含まれるバイナリ(バイト)データを、サーブレットで予期される正しいエンコーディングに変換します。着信するPOSTデータは、request.getParameter(..)などのメソッドで使用するためにサーバー側で正しいエンコーディングに変換される必要のある、特定のエンコーディングでコード化されている場合があります。

コード・セットを定義する方法は2種類あります。

IANA文字セットのJava文字セットへのマッピング

文字セットを記述するためにInternet Assigned Numbers Authority (IANA)によって割り当てられる名前は、Javaで使用される名前とは異なることがあります。すべてのHTTP通信がIANA文字セット名を使用し、これらの名前は常に同じとは限らないので、WebLogic ServerはIANA文字セット名をJava文字セット名に内部でマップし、通常は正しいマッピングを判断できます。ただし、IANA文字セットをJava文字セットの名前に明示的にマッピングすると、あいまいさを解決することができます。

IANA文字セットをJava文字セットにマップするには、WebLogic固有のデプロイメント記述子であるweblogic.xmlcharset-mapping要素で文字セット名を設定します。iana-charset-name要素にIANA文字セット名を定義し、java-charset-name要素にJava文字セット名を定義します。付録B「charset-mapping」を参照してください。

例:

<charset-mapping>
    <iana-charset-name>Shift-JIS</iana-charset-name>
    <java-charset-name>SJIS</java-charset-name>
</charset-mapping>

JSPの最初と最後での暗黙的インクルードの構成

Webアプリケーションのweb.xmlデプロイメント記述子の<jsp-property-group>要素内に、<include-prelude>要素と<include-coda>要素をそれぞれ追加することで、JSPページのグループに対しprelude (ヘッダーとも言います)およびcoda (フッターとも言います)を暗黙的にインクルードできます。それらの値は、コンテキストに相対的なパスであり、Webアプリケーション内の要素に対応している必要があります。それらの要素が存在する場合、指定されたパスが、プロパティ・グループ内の各JSPページの最初と最後に、それぞれ自動的に(includeディレクティブの場合のように)インクルードされます。グループ内に複数のincludeまたはcoda要素がある場合、それらは登場順にインクルードされます。複数のJSPプロパティ・グループがJSPページに適用される場合、対応する要素はJSP構成セクションに登場するのと同じ順序で処理されます。

ファイル/template/prelude.jspfおよび/template/coda.jspfについて考えてみます。次の例において、これらのファイルは各ファイルの最初と最後にコードを挿入するために使用されています。

例5-2暗黙的インクルード

<jsp-config>
  <jsp-property-group>
    <display-name>WebLogicServer</display-name>
    <url-pattern>*.jsp</url-pattern>
    <el-ignored>false</el-ignored>
    <scripting-invalid>false</scripting-invalid>
    <is-xml>false</is-xml>
    <include-prelude>/template/prelude.jspf</include-prelude>
    <include-coda>/template/coda.jspf</include-coda>
  </jsp-property-group>
</jsp-config>

JSPプロパティ・グループの構成

JSPプロパティ・グループとは、JSPページを表す一連のファイルに適用される、プロパティの集合です。これらのプロパティは、web.xmlデプロイメント記述子のjsp-property-group要素における1つまたは複数の下位要素で定義します。

JSPプロパティ・グループで定義されるほとんどのプロパティは、変換単位全体、つまりURLパターンによって照合されるリクエストされたJSPファイルと、includeディレクティブを使用してそこにインクルードされるすべてのファイルに対して、適用されます。例外は、page-encodingプロパティです。このプロパティは、URLパターンによって照合される各JSPファイルに個別に適用されます。JSPプロパティ・グループにおける適用可能性は、1つまたは複数のURLパターンによって定義されます。URLパターンには、Servlet 2.5仕様の第11章「Mapping Requests to Servlets」で定義されているものと同じ構文が使用されますが、これらのURLパターンがバインドされるのは変換時です。プロパティ・グループ内のすべてのプロパティは、URLパターンのいずれかに一致するWebアプリケーション内のリソースに適用されます。また、(JSPファイルのものであるという)暗黙的なプロパティが存在します。JSPプロパティ・グループは、タグ・ファイルには影響を与えません。

JSPプロパティ・グループのルール

以下は、JSPプロパティ・グループに適用されるルールの一部です。

  • リソースが、servlet-mappingjsp-property-groupの両方でURLパターンに一致している場合、最も特定的なパターンが適用される(Servlet仕様と同じルールに準拠)。

  • URLパターンが同一の場合、servlet-mappingよりもjsp-property-groupが優先されます。

  • 少なくとも1つのjsp-property-groupに、最も特定的な一致するURLパターンが含まれている場合、そのリソースはJSPファイルであると見なされ、そのjsp-property-groupのプロパティが適用されます。

  • リソースがJSPファイルと見なされている場合、すべてのinclude-preludeおよびinclude-codaプロパティは、一致するURLパターンを備えたjsp-property-group要素から適用されます。「JSPの最初と最後での暗黙的インクルードの構成」を参照してください。

JSPプロパティ・グループの特長

次の目的のために、jsp-property-groupを構成できます。

  • リソースがJSPファイルであることを示します(暗黙的)。

  • JSP式言語(JSP EL)評価の無効化を制御します。

  • スクリプト記述要素の無効化を制御します。

  • ページのエンコーディング情報を示します。

  • PreludeおよびCodaを自動的にインクルードします。

  • リソースがJSPドキュメントであることを示します。

JSPプロパティ・グループの詳細は、http://java.sun.com/products/jsp/のJSP 2.1仕様の第3章「JSP Configuration」を参照してください。

XML構文を使用したJSPドキュメントの記述

JSP 2.1仕様では、XML構文を活用できるようにすることで、JSPドキュメントのコンセプトの面で改良がなされています。また、JSPドキュメントは、プロパティ・グループを使用するように拡張されています。JSPドキュメントとは、XML構文を用いて記述されたJSPページです。JSPドキュメントは、暗黙的または明示的に、SPコンテナに対してそのようにJ記述される必要があり、その後JSPコンテナはそれらをXMLドキュメントとして処理し、整形式であるかどうかをチェックして、エンティティ宣言のようなリクエストがあればそれを適用します。JSPドキュメントは、標準的なJSPセマンティクスで動的コンテンツを生成するのに使用されます。

以下は、JSP標準タグ・ライブラリを使用して、ルート要素として表を有するXMLドキュメントを生成する、単純なJSPドキュメントの一例です。table要素には、値12、および3を格納する3つのrow下位要素があります。詳細およびその他のサンプルについては、http://java.sun.com/products/jsp/の6.4項「Examples of JSP Documents」を参照してください。

例5-3単純なJSPドキュメント

<table>
<c:forEach
xmlns:c="http://java.sun.com/jsp/jstl/core"
var="counter" begin="1" end="3">
<row>${counter}</row>
</c:forEach>
</table>

JSPドキュメントの使用方法

JSPドキュメントは、以下を含むいくつかの使用方法ができます。

  • JSPドキュメントは、JSPコンテナに直接渡すことができます。これは、ますます多くのコンテンツがXMLで作成されるようになってきているため、いっそう重要になってきています。生成されたコンテンツは、クライアントに直接送信することも、なんらかのXML処理パイプラインの一部とすることもできます。

  • JSPドキュメントは、XML対応ツールで操作できます。

  • JSPドキュメントは、XSLTなどXMLトランスフォーメーションを適用することによって、テキスト表現から生成できます。

  • JSPドキュメントは、たとえばなんらかのオブジェクトをシリアライズすることで、自動的に生成できます。

JSPドキュメントについての重要な情報

以下は、JSPドキュメントに関連するいくつかの重要な情報です。

  • デフォルトでは、ファイル名に拡張.jspxまたは.tagxの付いたファイルは、XML構文のJSPドキュメントとして扱われます。

  • web.xmlデプロイメント記述子で定義されるJSPプロパティ・グループは、Webアプリケーション内のどのファイルを、XML構文のものとして扱うことができるかを制御できます。「JSPプロパティ・グループの構成」を参照してください。

  • JSPファイルの最初が<jsp:root>である場合、これはXML構文内で使用されます。

  • <%@taglib%> taglibタグのかわりに、XMLネームスペースが使用される(xmlns:prefix="...")

  • <%...%><%!...%>、および<%=...%>のかわりに、<jsp:scriptlet><jsp:declaration>および<jsp:expression>タグが使用されます。

  • <%@page%>および<%@include%>のかわりに、<jsp:directive.page>および<jsp:directive.include>タグが使用されます。

  • 属性値内では、式を示すためには<%=...%>ではなく、%...%のみを使用します。

JSPドキュメントの詳細は、http://java.sun.com/products/jsp/のJSP 2.1仕様の第6章「JSP Documents」を参照してください。