public final class FacesServlet extends ObjectSE implements Servlet
FacesServlet は、Jakarta Server Faces を利用してユーザーインターフェースを構築する Web アプリケーションのリクエスト処理ライフサイクルを管理する Jakarta Servlet サーブレットです。
アプリケーションが Jakarta Servlet 3.0(およびそれ以降)コンテナーで実行されている場合、ランタイムは、HandlesTypes
アノテーションで以下のクラスを宣言する ServletContainerInitializer
インターフェースの実装を提供する必要があります。
FacesConfig
ResourceDependencies
ResourceDependency
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
ディレクトリにあります。
javax.faces.CONFIG_FILES
コンテキストパラメーターは web.xml
または web-fragment.xml
で宣言されています。
ServletContainerInitializer
実装の onStartup()
メソッドに渡されたクラスの Set
は空ではありません。
ランタイムがサーブレットを自動的にマップする必要があると判断した場合は、サーブレットを次の <url-pattern
> エントリにマップする必要があります。
*.xhtml
への自動マッピングは、コンテキストパラメーター DISABLE_FACESSERVLET_TO_XHTML_PARAM_NAME
で無効にできることに注意してください。
このクラスには javax.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_ATTR Jakarta 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, waitSE
public 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(javax.faces.context.FacesContext)
を呼び出します。これが true
を返す場合、ResourceHandler.handleResourceRequest(javax.faces.context.FacesContext)
を呼び出します。これが false
を返す場合は、Lifecycle.attachWindow(javax.faces.context.FacesContext)
、Lifecycle.execute(javax.faces.context.FacesContext)
、Lifecycle.render(javax.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(javax.servlet.ServletConfig)
public StringSE getServletInfo()
このサーブレットに関する情報を返します。
Servlet
の getServletInfo
String
Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.