2013-10-18 30 views
1

我想學習jsf和我讀的東西是它是一個有狀態的web框架。但是如果我沒有使用jsf並只使用servlet,我可以使用會話範圍來實現這種狀態。那麼,一個簡單的Web框架是什麼意思?該請求範圍和會話範圍都是相同的(有狀態的)?什麼是有條件的web框架的條件

回答

1

那個請求範圍和會話範圍都是一樣的(有狀態的)?

這是錯誤的。 @RequestScoped@SessionScoped既不相同也不具有狀態性。

A @RequestScoped bean是無狀態的。在這裏存儲的內容不超過1次請求的持續時間。有一個@RequestScoped豆的池,它們可以重複使用並在不同的用戶之間共享。這隻有在請求本身包含所有必要的信息時纔有可能。

A @SessionScoped bean是有狀態的。它與某個用戶(Session)關聯,不能共享。它將被存儲幾個請求,並可以保持一個狀態(因此有狀態)。

關於「有狀態」和「無狀態」有很多不同的定義,但是您可以將兩個作用域的屬性作爲無狀態和有狀態的示例。

但即使僅使用@RequestScoped bean,由於JSF的內部工作方式,您的JSF應用程序可能不會完全無狀態。新的JSF 2.2向無狀態邁出了一步。請參閱this explanation瞭解如何通過JSF完全無狀態的更多細節。

但請記住,在許多情況下,有狀態(或不是無狀態)是沒有問題的,並且並非所有無狀態應用程序的定義都比有狀態應用程序更好。