Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

4.32.4 JSP実装時の注意事項

JSPを実装するときの注意事項を示します。

<この項の構成>
(1) includeディレクティブ利用時の注意
(2) タグライブラリ利用時の注意
(3) <%=%>タグ記述時の注意
(4) URL指定とマッピング定義によるアクセスについて
(5) <jsp:plugin>タグ利用時の注意
(6) JSPから生成されるJavaソースのコンパイルについて
(7) JSPドキュメント内のversion属性について
(8) taglibディレクティブのuri属性で指定するURIとTLDファイルのマッピングについて
(9) JSPで動的なページをインクルードする場合の注意
(10) TLDファイルでのDOCTYPE宣言への内部サブセットの記述について
(11) JSPドキュメントおよびXML形式のタグファイルでの外部サブセットURIの指定について
(12) javax.servlet.ServletRequestオブジェクトのjavax.servlet.jsp.jspException属性の値について
(13) JSPでサポートしている文字エンコーディングについて

(1) includeディレクティブ利用時の注意

(2) タグライブラリ利用時の注意

(3) <%=%>タグ記述時の注意

JSPで<%= %>タグを使用する場合は,その中に「;(セミコロン)」が入らないようにしてください。セミコロンが入っている場合,JSPコンパイルでエラーとなります。

(4) URL指定とマッピング定義によるアクセスについて

直接JSPファイルのパスをURL指定してアクセスする場合とマッピング定義されたURLでアクセスする場合には,それぞれ別々のインスタンスが生成されます。したがって,jspInitメソッドがそれぞれのインスタンスで実行されることに注意してください。なお,<load-on-startup>タグで起動時にロードされるように指定した場合,起動時にロードされるインスタンスは,マッピング定義されたURLでアクセスするものと同じになります。

(5) <jsp:plugin>タグ利用時の注意

JSPページで,pluginアクションまたはJSPドキュメントでの<jsp:plugin>タグのcode属性は必ず指定してください。省略した場合はコンパイルエラーとなります。

(6) JSPから生成されるJavaソースのコンパイルについて

JSPから生成されるJavaソースをコンパイルするときのコンパイルオプションは指定できません。

(7) JSPドキュメント内のversion属性について

JSPドキュメントでは,<jsp:root>タグの属性として,使用するバージョン情報を記述できます。しかし,JSPで使用できる機能範囲は,該当するJSPを含むWebアプリケーションのweb.xmlのバージョン情報に従います。

例えば,<jsp:root version="1.2">と記述しているJSPドキュメントであっても,JSP 2.0仕様で追加されたJSP ELを使用できます。

(8) taglibディレクティブのuri属性で指定するURIとTLDファイルのマッピングについて

taglibディレクティブのuri属性で指定するURIは,JSP仕様によって次のどちらかの方法でマッピングします。同じURIを異なるTLDファイルにマッピングすることはできません。URIが重複した場合は,次に示す番号順を優先順位とし,優先順位の高いマッピングが有効になります。

  1. web.xmlの<taglib>要素の<taglib-uri>要素で指定したURIと,<taglib-location>要素で指定したTLDファイルをマッピング
  2. TLDファイルの<uri>要素で指定したURIと,そのTLDファイル自身をマッピング

URIの重複が検出された場合,次のメッセージが出力され,該当するマッピングは無視されます。

表4-51 URI重複時に出力されるメッセージと出力条件

メッセージID 出力条件
KDJE39314-W

J2EEサーバモード,サーブレットエンジンモード,またはcjjspcコマンドの場合
TLDファイルで記述した<uri>要素の内容が,web.xmlの<taglib-uri>要素の内容,またはほかのTLDファイルで記述した<uri>要素の内容と重複したときに出力されます。

cjjsp2javaコマンドの場合
TLDファイルで記述した<uri>要素の内容が,コマンド引数-taglibに指定したuriの内容,またはほかのTLDファイルで記述した<uri>要素の内容と重複したときに出力されます。
KDJE39315-W TLDファイルで記述した<uri>要素の内容が,ほかのTLDファイルで記述した<uri>要素の内容と重複したときに出力されます。
KDJE39316-W web.xmlに指定した<taglib>要素の内容と重複する<taglib-uri>要素を持つほかの<taglib>要素が指定されている場合に出力されます。

(9) JSPで動的なページをインクルードする場合の注意

JSPで,JSPやサーブレットなどの動的なページをインクルードする場合は,javax.servlet.RequestDispatcherのincludeメソッドを使用しないで,includeアクションを使用してください。

(10) TLDファイルでのDOCTYPE宣言への内部サブセットの記述について

TLDファイル(タグライブラリ・ディスクリプタ)で,DOCTYPE宣言に内部サブセットを記述しないでください。

タグの要素拡張またはタグライブラリの要素拡張でxsi:schemaLocation属性に指定するURIは絶対URIだけ指定できます。タグの要素拡張またはタグライブラリの要素拡張以外の目的で,J2EE仕様で定められたDTD/XMLスキーマ以外を参照しないでください。

(11) JSPドキュメントおよびXML形式のタグファイルでの外部サブセットURIの指定について

DOCTYPE宣言を指定する場合,外部サブセットURIには絶対URIだけ指定できます。また,XML1.0仕様で定義された外部エンティティ参照をする場合,外部エンティティ宣言に指定するURIには絶対URIだけ指定できます。相対URIを指定した外部サブセットおよび外部エンティティは参照できません。

(12) javax.servlet.ServletRequestオブジェクトのjavax.servlet.jsp.jspException属性の値について

JSPファイルで例外をスローした場合,pageディレクティブのerrorPage属性でエラーページを指定しているとき,例外がjavax.servlet.ServletRequestオブジェクトのjavax.servlet.jsp.jspException属性に設定されるとJSP仕様に記述されていますが,pageディレクティブのerrorPage属性でエラーページを指定しない場合も設定されます。

(13) JSPでサポートしている文字エンコーディングについて

Servlet仕様が規定したJSPの文法に従って作成されたJSPは,サーブレットに変換され,Javaプログラムとしてコンパイルされたあと,Java VM内にロードして実行できます。

Webコンテナでは,JSPの解析に使用するCosminexus XML Processor,およびJavaVMのサポートしている文字エンコーディングの制限によって,サーブレットに変換できるJSPファイルの文字エンコーディングに制限があります。

ここでは,JSPファイルで使用できる文字エンコーディングと,文字エンコーディングの指定について,JSPファイルの種類ごとに説明します。

なお,JSPドキュメントの場合,Servlet2.4/JSP2.0仕様に準拠したWebアプリケーションのときは,ファイルの拡張子に関係なく,web.xmlの指定によって,使用できる文字エンコーディングが異なります。Servlet2.4/JSP2.0仕様に準拠したWebアプリケーションの場合に,web.xmlの指定に対応するJSPドキュメントを次の表に示します。

表4-52 web.xmlの指定に対応するJSPドキュメント(Servlet2.4/JSP2.0仕様に準拠したWebアプリケーションの場合)

ファイルの拡張子 web.xmlの指定 対応するJSPドキュメント
jspx page-encoding要素で文字エンコーディングの指定あり ファイルの拡張子がjspx以外のJSPドキュメント
上記以外 ファイルの拡張子がjspxのJSPドキュメント
jspx以外 jsp-property-group要素内のis-xml要素でtrueを指定し,かつpage-encoding要素に指定なし ファイルの拡張子がjspxのJSPドキュメント
上記以外 ファイルの拡張子がjspx以外のJSPドキュメント
●使用できる文字エンコーディング

JSPファイルの種類ごとに,使用できる文字エンコーディングについて説明します。

●文字エンコーディングの指定

JSPファイルの種類ごとに,文字エンコーディングの指定方法と,指定値について説明します。

●デフォルトの文字エンコーディング

文字エンコーディングを明示的に指定しない場合,デフォルトの文字エンコーディングでJSPを処理します。この場合も,明示的に文字エンコーディングを指定しないJSPファイルの文字エンコーディングと,デフォルトの文字エンコーディングは,必ず一致するようにしてください。デフォルトの文字エンコーディングをServletのバージョンごとに次の表に示します。

表4-54 デフォルトの文字エンコーディング

Servlet/JSPのバージョン 種類 デフォルトの文字エンコーディング設定の有無 デフォルトの文字エンコーディング
Servlet2.2/JSP1.1 JSPページ 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し ISO-8859-1
JSPドキュメント 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し UTF-8
Servlet2.3/JSP1.2 JSPページ 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し ISO-8859-1
JSPドキュメント 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し UTF-8
Servlet2.4/JSP2.0 JSPページ 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し ISO-8859-1
JSPドキュメント 設定有り デフォルトの文字エンコーディング設定の指定値
設定無し ISO-8859-1

注※ デフォルトの文字エンコーディングの設定については,「4.6 デフォルトの文字エンコーディング設定」を参照してください。