• 検索結果がありません。

JSP 2.0,2.1 JSP ページ ISO-8859-1

3.3  JSF および JSTL の機能

この節では,JSF および JSTL の機能について説明します。

JSF および JSTL を使った Web アプリケーションでの処理の流れを次の図に示します。

図 3‒1 JSF および JSTL を使った Web アプリケーションでの処理の流れ

• クライアントから JSF アプリケーションを使用した Web ページにアクセスすると,リクエストが JSF フレームワーク内のサーブレット FacesServlet に渡ります。FacesServlet を起点として JSF アプリ ケーションの処理が始まり,JSF フレームワークの JSFCore からユーザが定義したクラスやページの処 理が実行されます。リクエストを処理した結果はレスポンスとして FacesServlet を介してクライアン トへ返されます。

• クライアントから JSTL を使用した Web ページにアクセスすると,JSTL ライブラリが Web ページで 使用しているタグに対応した処理を実行します。処理した結果はレスポンスとしてクライアントへ返 されます。

3.3.1 JSF の機能

ここでは,JSF の機能について説明します。

(1) JSF の基本機能

JSF を利用した Web アプリケーションの開発では,アクセスページビューの定義,ページの再利用,クラ イアントからの入力値の型の変換やバリデーション,アプリケーション内でのイベントの制御など,いろい ろな機能を利用できます。

JSF の機能の多くは,ManagedBean と EL 式を利用して実現します。

ManagedBeanとは,JSP および Facelets ページで使用するデータとメソッドを定義する JavaBean のこ とです。ManagedBean の詳細については,JSF の仕様を参照してください。

EL 式とは,規定の形式で記述することで,ManagedBean に定義したプロパティやメソッドを JSF タグの 属性と関連づけることができる機能です。EL 式は JSP の仕様の一部です。詳細は,JSP の仕様を参照して ください。

(2) アプリケーションサーバでの JSF の動作

アプリケーションサーバでの JSF の動作を次に示します。

• ValueChangeListener,ActionListener,AjaxBehaviorListener,ComponentSystemEventListener として動作するメソッドを EL 式で指定した場合に,同じメソッド名で引数あり,引数なしが存在する と,引数ありのメソッドだけが呼ばれます。

• <f:facet>タグの中に複数のコンポーネントがある場合,JSP ページでは,最初に記述されているコン ポーネントが処理されますが,Facelets ページでは,記述されているすべてのコンポーネントが処理さ れます。

• <f:subview>タグが<f:view>タグの外に記述された場合,JSP ページでは,<f:view>の値が

<f:subview>の値に上書きされます。Facelets ページでは,<f:view>の値は変わらず,<f:view>お よび<f:subview>が一緒に表示されます。

• <f:ajax>タグを利用する場合,<h:head>タグを記述しなければいけません。記述しないと,<f:ajax>

が動作しません。

• イベントの処理に valueChangeListener 属性または<f:valueChangeListener>タグを利用する場合 に,<h:inputText>タグの value 属性に ValueExpression を,scope 属性に RequestScoped を設定 した場合,入力値を変更しなくても,valueChangeListener のメソッドが実行されます。

• ユーザアプリケーションが"csfcfc"という Cookie を登録し,Facelets に Flash オブジェクトを利用し て繰り返しリクエストをした場合,Flash オブジェクトのデータの読み込みが失敗して,例外処理

(NullPointerException)が発生します。

• <ui:repeat>タグの繰り返し回数は,size 属性に設定された値より 1 回多くなります。

• ブラウザの仕様によって,一部のタグの属性が無効になるおそれがあります。ブラウザの仕様をご確認 ください。

• <composite:attribute>タグ,<composite:facet>タグ,<composite:insertFacet>タグ,

<composite:renderFacet>タグの requierd 属性を有効にする場合は,コンテキストパラメタ javax.faces.PROJECT_STAGE の値を Development に設定してください。

• コンテキストパラメタ javax.faces.FACELETS_REFRESH_PERIOD の指定値は,Facelets ページへ の最新のリクエストを受けてから Facelets ファイルの更新を確認するまでの時間になります。そのた め,短時間のうちに多くのリクエストが送られる環境では,最新のリクエストに合わせて更新の確認ま での時間が延長されてしまい,Facelets ファイルの更新が反映されない状態が続くおそれがあります。

• アプリケーションサーバでは,Bean Validation の機能は常に有効になります。Bean Validation の機 能を無効にする方法は,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機 能)」の「10.5.1 JSF から Bean Validation の利用手順」を参照してください。

• <f:attribute>タグで値を指定する対象として,文字列(java.lang.String 型)を指定値とする属性を指 定してください。

• JSF アプリケーションのクライアント画面からの POST データに含まれるリクエストのパラメタ数は,

使用する JSF タグの種類や使用方法によって異なります。

webserver.connector.limit.max_parameter_count キーでリクエストパラメタ数の上限値を設定する 場合は,本番環境と同等の環境で実際の JSF アプリケーションを使用して検証することをお勧めしま す。

• アプリケーションの JAR ファイル内の META-INF/resources のリソースを更新した場合,リロード時 に KDJE39556-W のメッセージが出力されます。この状態で JSF からリソースにアクセスした場合,

更新したリソースが取得できます。

3.3.2 JSTL の機能

JSTL では,ページにタグを定義することで,アプリケーションで共通に使用する処理を実行できます。

JSTL には,値の設定,条件分岐,データベースへのアクセス,国際化,XML 解析などに関するタグが含 まれています。

3.3.3 アプリケーションサーバ独自の機能

JSF または JSTL で利用できるアプリケーションサーバ独自の機能を次の表に示します。

表 3‒2 アプリケーションサーバ独自の機能

項番 機能 説明

1 ログの出力 実行時の情報をログファイルに記録する機能です。

2 性能解析トレースの出力 特定の機能(メソッド)の開始と終了をファイルにトレースする機能です。

この情報を使って,システム性能およびボトルネックを分析できます。性 能解析トレースの出力の詳細については,マニュアル「アプリケーション サーバ 機能解説 保守/移行編」の「7. 性能解析トレースを使用した性 能解析」を参照してください。

3.3.4 アプリケーションサーバのほかの機能との関連

ここでは,JSF および JSTL とアプリケーションサーバのほかの機能との関連について説明します。

JSF または JSTL とあわせて利用する場合に,留意する必要がある機能を次の表に示します。

表 3‒3 JSF または JSTL と合わせて利用する場合に留意する必要がある機能

項番 機能 機能についての参照先

1 明示管理ヒープ機能 マニュアル「機能解説 拡張編」の

「8. 明示管理ヒープ機能を使用し たフルガーベージコレクションの 抑止」

2 セッションフェイルオーバ機能 マニュアル「機能解説 拡張編」の

「5.2 セッションフェイルオーバ 機能の概要」

3 リデプロイ機能とリロード機能 マニュアル「機能解説 基本・開発

編(コンテナ共通機能)」の「13. 

J2EE アプリケーションの形式とデ プロイ」

4 JSP 事前コンパイル機能 「2.5 JSP 事前コンパイル機能と

コンパイル結果の保持」

項番 機能 機能についての参照先 5 J2EE リソースへの別名付与(ユーザ指定名前空間機能) マニュアル「機能解説 基本・開発

編(コンテナ共通機能)」の「2. 

ネーミング管理」

注 マニュアル名の「アプリケーションサーバ」は省略しています。

以降,JSF および JSTL と各機能との関連について説明します。

(1) 明示管理ヒープ機能

JSF では,ユーザが作成した Facelets ファイルや JSP ファイルを基に生成された次の情報およびオブジェ クトを,HTTP セッションに登録します。

• HTML ページの画面の情報(ビューの状態)

• SessionScope を定義した ManagedBean クラスのオブジェクト

これらの情報およびオブジェクトは,ほかの Web アプリケーションと同様に,明示管理ヒープ機能を使用 して管理できます。

ただし,情報およびオブジェクトが HTTP セッションに登録されるかどうかには条件があります。また,

HTTP セッションに登録されるすべての情報が明示管理ヒープを使用して管理されるわけではありませ ん。HTTP セッションに情報またはオブジェクトが登録される条件と,それらの情報またはオブジェクト が明示管理ヒープ機能を使用して管理されるかどうかを次の表に示します。

表 3‒4 HTTP セッションに情報またはオブジェクトが登録される条件

情報またはオブジェクト HTTP セッションに登録される条件

明示管理ヒープ機能 を使用して管理され

るかどうか UIComponent のビュー情報(テキスト

フィールド,ラジオボタン,サブミットボ タンなどのユーザとの入出力インター フェースを構成するビューの情報)

JSF 標準コンテキストパラメタの

javax.faces.STATE_SAVING_METHOD の値が

「server」(デフォルト値)の場合

使用しない

ManagedBean オブジェクト SessionScope アノテーションが指定された場合,ま たは faces-config.xml の<managed-bean-scope>

に「session」を指定した場合

使用する

ページで使用する文字コード HTTP セッションが生成されていた場合 使用する

SessionMap に登録したオブジェクト ユーザアプリケーションで使用した場合 使用する

また,明示管理ヒープ機能を使用する場合,JSF アプリケーションが明示管理ヒープ領域で使用するメモリ サイズの概算は,次の式を使用して算出してください。

JSF アプリケーションが明示管理ヒープ領域で使用するメモリサイズ 1セッション当たりで明示管理ヒープ領域を使用するサイズ

=(A+1) × 0.4キロバイト

+ManagedBeanオブジェクトサイズ(HTTPセッションに登録される場合)

+SeesionMapに登録した場合のオブジェクトサイズ

注※ A は JSF の論理ページの最大値を設定するプロパティ

(com.sun.faces.numberOfLogicalViews)に指定した値です。デフォルトは 15 です。

Outline

関連したドキュメント