クラス FacesServlet
- 実装されたすべてのインターフェース:
Servlet
FacesServlet は、Jakarta Faces を利用してユーザーインターフェースを構築する Web アプリケーションのリクエスト処理ライフサイクルを管理する Jakarta Servlet サーブレットです。
アプリケーションが Jakarta Servlet 3.0(およびそれ以降)コンテナーで実行されている場合、ランタイムは、HandlesTypes
アノテーションで以下のクラスを宣言する ServletContainerInitializer
インターフェースの実装を提供する必要があります。
FacesConfig
ResourceDependencies
ResourceDependency
- jakarta.faces.bean.ManagedBean
FacesComponent
UIComponent
Converter
FacesConverter
ListenerFor
ListenersFor
FacesBehaviorRenderer
Renderer
FacesValidator
Validator
この Jakarta Servlet サーブレットは、web.xml
または web-fragment.xml
で明示的にマップされておらず、以下の 1 つ以上の条件に該当する場合、自動的にマップする必要があります。
faces-config.xml
ファイルはWEB-INF
にありますfaces-config.xml
ファイルは、アプリケーションのクラスパスの jar のMETA-INF
ディレクトリにあります。.faces-config.xml
で終わるファイル名は、アプリケーションのクラスパスの jar のMETA-INF
ディレクトリにあります。jakarta.faces.CONFIG_FILES
コンテキストパラメーターはweb.xml
またはweb-fragment.xml
で宣言されています。ServletContainerInitializer
実装のonStartup()
メソッドに渡されたクラスのSet
は空ではありません。
ランタイムがサーブレットを自動的にマップする必要があると判断した場合は、サーブレットを次の <url-pattern
> エントリにマップする必要があります。
- /faces/*
- *.jsf
- *.faces
- *.xhtml
*.xhtml
への自動マッピングは、コンテキストパラメーター DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME
で無効にできることに注意してください。
このクラスには jakarta.servlet.annotation.MultipartConfig
アノテーションを付ける必要があります。これにより、Jakarta Faces 実装が実行されている Jakarta Servlet コンテナーがマルチパートフォームデータを正しく処理します。
このクラスに関連するセキュリティの考慮事項
Web アプリケーションのセキュリティのトピックは横断的な関心事であり、仕様のあらゆる側面がそれに対処します。ただし、他のフレームワークと同様に、アプリケーション開発者はセキュリティに細心の注意を払う必要があります。アプリケーションの残りのセキュリティ問題の中でこれらのトピックを検討してください。これは決してセキュリティ上の関心事の完全なリストではなく、徹底的なアプリケーションレベルのセキュリティレビューの代わりにはなりません。
プレフィックスマッピングと
FacesServlet
FacesServlet
が<url-pattern>/faces/*</url-pattern>
などの接頭辞<url-pattern>
を使用してマップされている場合、FacesServlet
によって最初に処理されることなくビューソースへのアクセスを防ぐために何かを行う必要があります。一般的なアプローチの 1 つは、<security-constraint> をすべての facelet ファイルとフロー定義ファイルに適用することです。<security-constraint> の使用の詳細については、Jakarta Servlet Specification のデプロイメント記述子の章を参照してください。許容される HTTP メソッド
Jakarta Faces Specification では、GET および POST http メソッドのみを使用する必要があります。Web アプリケーションが PUT や DELETE などの他の http メソッドを必要としない場合は、<http-method> 要素と <http-method-omission> 要素を使用して、許可される http メソッドを制限することを検討してください。これらの要素の使用に関する詳細については、Jakarta Servlet Specification のセキュリティセクションを参照してください。
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSE
FacesServlet
から拡張機能のないバリアント (*.xhtml
なし) への自動マッピングを有効にする必要があるかどうかを通知するために、ランタイムが参照するServletContext
初期パラメーター。static final StringSE
Jakarta Faces 構成情報を含む、コンテキスト相対リソースパスのコンマ区切りリストのコンテキスト初期化パラメーター名(存在する場合は自動的にロードされる/WEB-INF/faces-config.xml
に加えて)。static final StringSE
FacesServlet
の拡張*.xhtml
への自動マッピングを無効にする必要があるかどうかをランタイムが確認するServletContext
init パラメーター。static final StringSE
使用するLifecycle
インスタンスのライフサイクル識別子のコンテキスト初期化パラメーター名。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
destroy()
起動時に取得したすべてのリソースを解放します。このサーブレットのServletConfig
インスタンスを返します。このサーブレットに関する情報を返します。void
init
(ServletConfig servletConfig) 必要なファクトリインスタンスを取得します。void
service
(ServletRequest req, ServletResponse resp) 受信リクエストを処理し、以下の仕様に従って対応するレスポンスを作成します。
フィールドの詳細
CONFIG_FILES_ATTR
Jakarta Faces 構成情報を含む、コンテキスト相対リソースパスのコンマ区切りリストのコンテキスト初期化パラメーター名(存在する場合は自動的にロードされる
/WEB-INF/faces-config.xml
に加えて)。- 関連事項:
LIFECYCLE_ID_ATTR
使用する
Lifecycle
インスタンスのライフサイクル識別子のコンテキスト初期化パラメーター名。- 関連事項:
DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME
FacesServlet
の拡張*.xhtml
への自動マッピングを無効にする必要があるかどうかをランタイムが確認するServletContext
init パラメーター。このパラメーターの値がtrue
と大文字小文字を区別せずに等しい場合にのみ、実装はこの自動マッピングを無効にする必要があります。このパラメーターが指定されていない場合、この自動マッピングは上記のように有効になります。
- 関連事項:
AUTOMATIC_EXTENSIONLESS_MAPPING_PARAM_NAME
FacesServlet
から拡張機能のないバリアント (*.xhtml
なし) への自動マッピングを有効にする必要があるかどうかを通知するために、ランタイムが参照するServletContext
初期パラメーター。実装では、このパラメーターの値が大文字と小文字を区別せずにtrue
と等しい場合にのみ、この自動マッピングを有効にする必要があります。このパラメーターが指定されていない場合、この自動マッピングは有効になりません。
- 関連事項:
コンストラクターの詳細
FacesServlet
public FacesServlet()
メソッドの詳細
init
必要なファクトリインスタンスを取得します。
- 次で指定:
- インターフェース
Servlet
のinit
- パラメーター:
servletConfig
- サーブレットの構成および初期化パラメーターを含むServletConfig
オブジェクト- 例外:
ServletException
- 何らかの理由で、この Faces アプリケーションの起動が失敗した場合。これには、このinit()
メソッドの処理前または処理中に解析される構成ファイルのエラーが含まれます。- 関連事項:
service
public void service(ServletRequest req, ServletResponse resp) throws IOExceptionSE, ServletException 受信リクエストを処理し、以下の仕様に従って対応するレスポンスを作成します。
このメソッドの
request
およびresponse
引数がそれぞれHttpServletRequest
およびHttpServletResponse
のインスタンスでない場合、このメソッドを呼び出した結果は未定義です。このメソッドは、レスポンス引数(
HttpServletResponse
にキャスト)でsendError
メソッドを呼び出し、コードHttpServletResponse.SC_NOT_FOUND
を引数として渡すことにより、次の文字列を含むリクエストにレスポンスする必要があります。/WEB-INF/ /WEB-INF /META-INF/ /META-INF
このメソッドの仕様で前述したいずれのケースもこのリクエストのサービスに適用されない場合、リクエストを処理するには次のアクションを実行する必要があります。
このリクエストの
FacesContext
インスタンスを取得します。Application.getResourceHandler()
を呼び出して、このリクエストのResourceHandler
を取得します。ResourceHandler.isResourceRequest(jakarta.faces.context.FacesContext)
を呼び出します。これがtrue
を返す場合、ResourceHandler.handleResourceRequest(jakarta.faces.context.FacesContext)
を呼び出します。これがfalse
を返す場合は、Lifecycle.attachWindow(jakarta.faces.context.FacesContext)
、Lifecycle.execute(jakarta.faces.context.FacesContext)
、Lifecycle.render(jakarta.faces.context.FacesContext)
の順に呼び出します。どちらの場合もFacesException
がスローされた場合は、FacesException
から原因を抽出します。原因がnull
の場合は、FacesException
からメッセージを抽出し、それを新しいServletException
インスタンスの内部に置き、FacesException
インスタンスを根本原因として渡してから、ServletException
インスタンスを再スローします。原因がServletException
のインスタンスである場合、原因を再スローします。原因がIOException
のインスタンスである場合、原因を再スローします。それ以外の場合は、新しいServletException
インスタンスを作成し、最初の引数として原因からのメッセージを渡し、2 番目の引数として原因自体を渡します。実装では、
FacesContext.release()
がこのリクエストの Jakarta Faces 関連部分の処理で可能な限り遅く、finally ブロック内で呼び出されるようにする必要があります。- 次で指定:
- インターフェース
Servlet
のservice
- パラメーター:
req
- 処理中の Jakarta Servlet リクエストresp
- 作成している Jakarta Servlet レスポンス- 例外:
IOExceptionSE
- 処理中に入出力エラーが発生した場合ServletException
- 処理中に Jakarta Servlet エラーが発生した場合
destroy
public void destroy()起動時に取得したすべてのリソースを解放します。
getServletConfig
このサーブレットの
ServletConfig
インスタンスを返します。- 次で指定:
- インターフェース
Servlet
のgetServletConfig
- 戻り値:
- このサーブレットを初期化する
ServletConfig
オブジェクト - 関連事項:
getServletInfo
このサーブレットに関する情報を返します。
- 次で指定:
- インターフェース
Servlet
のgetServletInfo
- 戻り値:
- サーブレット情報を含む
String