public final class FacesServlet extends ObjectSE implements Servlet
FacesServlet は、Jakarta Server Faces を利用してユーザーインターフェースを構築する Web アプリケーションのリクエスト処理ライフサイクルを管理する Jakarta Servlet サーブレットです。
アプリケーションが Jakarta Servlet 3.0(およびそれ以降)コンテナーで実行されている場合、ランタイムは、HandlesTypes アノテーションで以下のクラスを宣言する ServletContainerInitializer インターフェースの実装を提供する必要があります。
FacesConfigResourceDependenciesResourceDependencyFacesComponentUIComponentConverterFacesConverterListenerForListenersForFacesBehaviorRendererRendererFacesValidatorValidator この 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> エントリにマップする必要があります。
*.xhtml への自動マッピングは、コンテキストパラメーター DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME で無効にできることに注意してください。
このクラスには jakarta.servlet.annotation.MultipartConfig アノテーションを付ける必要があります。これにより、Jakarta Server 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 Server Faces 仕様では、GET および POST http メソッドの使用のみが必要です。Web アプリケーションが PUT や DELETE などの他の http メソッドを必要としない場合は、<http-method> および <http-method-omission> 要素を使用して、許可される http メソッドを制限することを検討してください。これらの要素の使用の詳細については、Jakarta Servlet Specification のセキュリティセクションを参照してください。
| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE | CONFIG_FILES_ATTRJakarta Server Faces 構成情報を含む、コンテキスト相対リソースパスのコンマ区切りリストのコンテキスト初期化パラメーター名(存在する場合は自動的にロードされる /WEB-INF/faces-config.xml に加えて)。 |
static StringSE | DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME
|
static StringSE | LIFECYCLE_ID_ATTR 使用する Lifecycle インスタンスのライフサイクル識別子のコンテキスト初期化パラメーター名。 |
| コンストラクターと説明 |
|---|
FacesServlet() |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | destroy() 起動時に取得したすべてのリソースを解放します。 |
ServletConfig | getServletConfig() このサーブレットの ServletConfig インスタンスを返します。 |
StringSE | getServletInfo() このサーブレットに関する情報を返します。 |
void | init(ServletConfig servletConfig) 必要なファクトリインスタンスを取得します。 |
void | service(ServletRequest req, ServletResponse resp)受信リクエストを処理し、以下の仕様に従って対応するレスポンスを作成します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final StringSE CONFIG_FILES_ATTR
Jakarta Server Faces 構成情報を含む、コンテキスト相対リソースパスのコンマ区切りリストのコンテキスト初期化パラメーター名(存在する場合は自動的にロードされる /WEB-INF/faces-config.xml に加えて)。
public static final StringSE LIFECYCLE_ID_ATTR
使用する Lifecycle インスタンスのライフサイクル識別子のコンテキスト初期化パラメーター名。
public static final StringSE DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME
FacesServlet の拡張 *.xhtml への自動マッピングを無効にする必要があるかどうかをランタイムが確認する ServletContext init パラメーター。このパラメーターの値が true と大文字小文字を区別せずに等しい場合にのみ、実装はこの自動マッピングを無効にする必要があります。
このパラメーターが指定されていない場合、この自動マッピングは上記のように有効になります。
public void init(ServletConfig servletConfig) throws ServletException
必要なファクトリインスタンスを取得します。
Servlet の init servletConfig - サーブレットの構成および初期化パラメーターを含む ServletConfig オブジェクト ServletException - 何らかの理由で、この Faces アプリケーションの起動が失敗した場合。これには、この init() メソッドの処理前または処理中に解析される構成ファイルのエラーが含まれます。UnavailableException, Servlet.getServletConfig()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 Server Faces 関連部分の処理で可能な限り遅く、finally ブロック内で呼び出されるようにする必要があります。
Servlet の service req - 処理中の Jakarta Servlet リクエスト resp - 作成している Jakarta Servlet レスポンス IOExceptionSE - 処理中に入出力エラーが発生した場合 ServletException - 処理中に Jakarta Servlet エラーが発生した場合 public ServletConfig getServletConfig()
このサーブレットの ServletConfig インスタンスを返します。
Servlet の getServletConfig ServletConfig オブジェクト Servlet.init(jakarta.servlet.ServletConfig)public StringSE getServletInfo()
このサーブレットに関する情報を返します。
Servlet の getServletInfo String Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.