Cosminexus 機能解説
JSPを実装するときの注意事項を示します。
JSPで<%= %>タグを使用する場合は,その中に「;(セミコロン)」が入らないようにしてください。セミコロンが入っている場合,JSPコンパイルでエラーとなります。
直接JSPファイルのパスをURL指定してアクセスする場合とマッピング定義されたURLでアクセスする場合には,それぞれ別々のインスタンスが生成されます。したがって,jspInitメソッドがそれぞれのインスタンスで実行されることに注意してください。なお,<load-on-startup>タグで起動時にロードされるように指定した場合,起動時にロードされるインスタンスは,マッピング定義されたURLでアクセスするものと同じになります。
JSPページで,pluginアクションまたはJSPドキュメントでの<jsp:plugin>タグのcode属性は必ず指定してください。省略した場合はコンパイルエラーとなります。
JSPから生成されるJavaソースをコンパイルするときのコンパイルオプションは指定できません。
JSPドキュメントでは,<jsp:root>タグの属性として,使用するバージョン情報を記述できます。しかし,JSPで使用できる機能範囲は,該当するJSPを含むWebアプリケーションのweb.xmlのバージョン情報に従います。
例えば,<jsp:root version="1.2">と記述しているJSPドキュメントであっても,JSP 2.0仕様で追加されたJSP ELを使用できます。
taglibディレクティブのuri属性で指定するURIは,JSP仕様によって次のどちらかの方法でマッピングします。同じURIを異なるTLDファイルにマッピングすることはできません。URIが重複した場合は,次に示す番号順を優先順位とし,優先順位の高いマッピングが有効になります。
URIの重複が検出された場合,次のメッセージが出力され,該当するマッピングは無視されます。
表4-51 URI重複時に出力されるメッセージと出力条件
メッセージID | 出力条件 |
---|---|
KDJE39314-W |
|
KDJE39315-W | TLDファイルで記述した<uri>要素の内容が,ほかのTLDファイルで記述した<uri>要素の内容と重複したときに出力されます。 |
KDJE39316-W | web.xmlに指定した<taglib>要素の内容と重複する<taglib-uri>要素を持つほかの<taglib>要素が指定されている場合に出力されます。 |
JSPで,JSPやサーブレットなどの動的なページをインクルードする場合は,javax.servlet.RequestDispatcherのincludeメソッドを使用しないで,includeアクションを使用してください。
TLDファイル(タグライブラリ・ディスクリプタ)で,DOCTYPE宣言に内部サブセットを記述しないでください。
タグの要素拡張またはタグライブラリの要素拡張でxsi:schemaLocation属性に指定するURIは絶対URIだけ指定できます。タグの要素拡張またはタグライブラリの要素拡張以外の目的で,J2EE仕様で定められたDTD/XMLスキーマ以外を参照しないでください。
DOCTYPE宣言を指定する場合,外部サブセットURIには絶対URIだけ指定できます。また,XML1.0仕様で定義された外部エンティティ参照をする場合,外部エンティティ宣言に指定するURIには絶対URIだけ指定できます。相対URIを指定した外部サブセットおよび外部エンティティは参照できません。
JSPファイルで例外をスローした場合,pageディレクティブのerrorPage属性でエラーページを指定しているとき,例外がjavax.servlet.ServletRequestオブジェクトのjavax.servlet.jsp.jspException属性に設定されるとJSP仕様に記述されていますが,pageディレクティブのerrorPage属性でエラーページを指定しない場合も設定されます。
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ファイルの種類ごとに,文字エンコーディングの指定方法と,指定値について説明します。
表4-53 JSPファイルの種類ごとの,文字エンコーディングの指定方法
指定方法 | JSPファイルの種類 | ||
---|---|---|---|
JSPページ | JSPドキュメント | ||
ファイルの拡張子がjspxの場合 | ファイルの拡張子がjspx以外の場合 | ||
web.xmlのjsp-property-group要素内のpage-encoding要素 (Servlet2.4/JSP2.0仕様のWebアプリケーションの場合) |
○ | − | ○ |
tagディレクティブのpageEncoding属性 (Servlet2.4/JSP2.0仕様のWebアプリケーションの場合) |
○ | − | − |
pageディレクティブのpageEncoding属性 (Servlet2.3/JSP1.2仕様およびServlet2.4/JSP2.0仕様のWebアプリケーションの場合) |
○ | − | − |
pageディレクティブのcontentType属性 | ○ | − | − |
XML宣言のencoding属性 | − | ○ | ○ |
(凡例)○:指定できる −:該当しない
文字エンコーディングを明示的に指定しない場合,デフォルトの文字エンコーディングで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 デフォルトの文字エンコーディング設定」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.