Cosminexus 機能解説
JSP 2.0仕様で追加,変更された仕様を,Cosminexus上で利用するときの注意事項を示します。JSP 2.0仕様およびJSP 1.2仕様については,それぞれの仕様書(JSP 2.0仕様書,JSP 1.2仕様書)を参照してください。
JSP 2.0仕様では,JSPドキュメントの標準的な拡張子を「jspx」としています。Cosminexusで利用するWebコンテナでは,「jspx」を拡張子としたファイルは,デフォルトマッピングによってweb.xmlにURLマッピング定義しなくてもJSPドキュメントとして扱われます。
タグファイルは,JSPファイルと同様に,JSPのコンパイルによってJavaソースファイルとクラスファイルが生成されます。Javaソースファイルおよびクラスファイルは,JSPコンパイル結果の出力先ディレクトリに出力されます。
JSPコンパイル結果の出力先ディレクトリは変更できます。なお,生成されるJavaソースファイル,およびクラスファイルのパスがOSの上限を超える場合は,出力先ディレクトリを変更する必要があります。
JSPコンパイル結果の出力先ディレクトリについては,JSP事前コンパイル機能を使用している場合,「4.7.5(2) JSPコンパイル結果の出力先」,JSP事前コンパイル機能を使用してない場合,「4.7.6(3) JSPコンパイル結果の出力先」を参照してください。
JSP 2.0仕様では,EL式の構文解析と評価をするAPIとして次のAPIが提供されます。
JSP 2.0仕様では,これらのAPIから複数のEL式を指定することはできませんが,Cosminexusでは,複数のEL式を指定できます。
<?xml version="1.0" ?> <jsp:root xmlns:jsp=http://java.sun.com/JSP/Page version="2.0"> <jsp:directive.page import="java.util.*"/> <jsp:useBean id="name" class="test.Bean"/> </jsp:root> |
pageディレクティブのisThreadSafe属性は,javax.servlet.SingleThreadModelインタフェースが非推奨となったことによって,JSP 2.0仕様では非推奨とされています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,pageディレクティブのisThreadSafe属性を使用できます。ただし,Servlet 2.4仕様で,javax.servlet.SingleThreadModelインタフェースが非推奨となった理由に注意して使用してください。
JSP 2.0仕様では,JSPドキュメントを使用した場合に,デフォルトのContentTypeの値が「text/xml」になると追記されています。
Cosminexusでは,JSP 2.0の場合は「text/xml」,JSP 1.2の場合は「text/html」をデフォルトとして動作します。
JSP 2.0仕様では,タグライブラリ・ディスクリプタの配置場所についての規定が追加されています。
Cosminexusでは,配置するディレクトリによって,Webアプリケーションの開始時およびJSPのコンパイル時にKDJE39289-Wのメッセージが出力されることがあります。ただし,エラーとはならないでWebアプリケーションが実行されます。
メッセージが出力される条件を次に示します。
javax.servlet.jsp.tagext.PageDataオブジェクトのgetInputStreamメソッドで取得できるXMLビュー情報の仕様が,JSP 2.0仕様で変更されています。getInputStreamメソッドは,javax.servlet.jsp.tagext.TagLibraryValidatorクラスのvalidateメソッドの第三引数に指定して使用されます。
Cosminexusでの変更点を,JSP 2.0とJSP 1.2に分けて示します。
JSP 2.0仕様では,pageディレクティブのpageEncoding属性は,pageEncoding属性を記述したファイルにだけ適用されることが追記されています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,includeディレクティブでファイルをインクルードするときに,インクルード先のファイルに文字コードの指定がないと,インクルード元の文字コードがインクルード先のファイルに適用されます。
JSPドキュメントでのXML宣言に指定する文字コードと,JSPドキュメントでのpageディレクティブのpageEncoding属性に指定する文字コードが異なる場合の仕様がJSP 2.0仕様では追記されています。JSP 1.2仕様には記述がありません。
Cosminexusで文字コードが異なる場合の制御を,JSP 2.0とJSP 1.2に分けて示します。
JSPドキュメントでpageディレクティブのcontentType属性がない場合や,属性にCHARSET値がない場合に使用されるHTTPレスポンスのデフォルトの文字コードがJSP 2.0仕様では追記されています。
Cosminexusでのデフォルト値を,JSP 2.0とJSP 1.2に分けて示します。
pageディレクティブのpageEncoding属性の複数回指定について,JSP 2.0仕様では仕様が変更されています。
JSP 2.0仕様では,トランスレーション単位(JSPとincludeディレクティブでインクルードされるファイル)でpageEncoding属性の複数回指定ができるようになっています。また,同じJSPファイル内でpageEncoding属性の複数回指定をするとコンパイルエラーとなることが追記されています。
Cosminexusでは,Webアプリケーションのバージョンに関係なく,トランスレーション単位でpageEncoding属性の複数回指定ができます。このとき,ファイル単位に指定した値が該当するファイルに適用されます。また,同じJSPファイル内でのpageEncoding属性の複数回指定については,JSP 2.0とJSP 1.2で仕様が異なります。Cosminexusでの仕様を,JSP 2.0とJSP 1.2に分けて示します。
JSPドキュメントでnamespaceを使ってタグライブラリを宣言し,指定したuriがtaglibマップ(uriとタグライブラリ・ディスクリプタのマッピング)で見つからない場合の動作について,JSP 2.0仕様では追記されています。
Cosminexusでの動作を,JSP 2.0とJSP 1.2に分けて示します。
JSPドキュメントでのファイルの文字コードの決定方法について,JSP 2.0仕様で仕様が変更されています。
Cosminexusでの文字コードの決定方法を,JSP 2.0とJSP 1.2に分けて示します。
JSP2.0仕様であるELの開始を示す"${"に含まれる"$"を文字列として表すエスケープシーケンスについて,JSP仕様と,Cosminexusで利用するWebコンテナの仕様を次に示します。
Cosminexusで利用するWebコンテナでは,"\$"はエスケープシーケンスによって,"$"と出力されます。"\$"と出力したい場合は,"\\$"と記述します。
"\$"と記述した場合の動作を,JSP2.0とJSP1.2に分けて示します。
表4-55 JSP2.0で動作する場合の"\$"の出力結果
ELの設定の有効/無効 | 仕様 | 出力結果 |
---|---|---|
有効 | JSP2.0仕様 | "$" |
Cosminexusで利用するWebコンテナ | "$" | |
無効 | JSP2.0仕様 | "\$" |
Cosminexusで利用するWebコンテナ | "$" |
表4-56 JSP1.2で動作する場合の"\$"の出力結果
仕様 | 出力結果 |
---|---|
JSP1.2仕様 | "\$" |
Cosminexusで利用するWebコンテナ | "$" |
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.