私はjsfを学ぼうとしていますが、私が読んだことは、それがステートフルなWebフレームワークであるということです. しかし、jsf を使用せずにサーブレットのみを使用する場合は、セッション スコープを使用してこのステートフル性を実現できます。では、steful Web フレームワークとは何を意味するのでしょうか? その requet スコープとセッション スコープは両方とも同じ (ステートフル) ですか?
1 に答える
その requet スコープとセッション スコープは両方とも同じ (ステートフル) ですか?
これは間違っています。@RequestScoped
同じで@SessionScoped
もなく、両方ともステートフルでもありません。
@RequestScoped
Bean はステートレスです。1 つのリクエストの期間を超えてここに保存されるものはありません。Beanのプールがあり、@RequestScoped
再利用して異なるユーザー間で共有できます。これは、リクエスト自体に必要な情報がすべて含まれている場合にのみ可能です。
@SessionScoped
Bean はステートフルです。特定のユーザー (セッション) に関連付けられており、共有できません。いくつかのリクエストのために保存され、状態を維持できます (したがって、ステートフルです)。
「ステートフル」と「ステートレス」の定義にはさまざまな定義がありますが、ステートレスとステートフルの例として 2 つのスコープのプロパティを取り上げることができます。
ただし、Bean のみを使用する場合でも、@RequestScoped
JSF が内部でどのように機能するかにより、JSF アプリケーションが完全にステートレスであるとは限りません。ただし、新しい JSF 2.2 は、ステートレスに向けてさらに一歩進んでいます。JSF で完全にステートレスにする方法の詳細については、この説明を参照してください。
ただし、多くの場合、ステートフルであること (またはステートレスでないこと) は問題ではなく、すべてのステートレス アプリケーションが定義上、ステートフル アプリケーションよりも優れているわけではないことに注意してください。