2013-07-20 409 views
1

我在做Spring Web應用程序。我有一個表單,需要以GET和POST的形式加載表單對象。我已經加載對象的方法有兩種:@ModelAttribute和@SessionAttributes的內存使用情況

  1. 負載經由@ModelAttribute所述對象的一個​​方法

  2. 負載經由該窗體的GET方法的對象註釋和註釋與@SessionAttributes形式控制器({」命令「})

我的問題是:

是否使用@ModelAttribute方法爲Web應用程序的大麻木是個好主意同時在線用戶?它可以有所作爲嗎?

回答

1

比較@ModelAttribute vs @SessionAttributes實際上是一個架構判斷,即:有狀態vs無狀態。

還有第三個選項來存儲表單中的狀態。這意味着點擊提交時,初始get方法中加載的數據將在帖子中發送,因此不需要重新加載。

第四個選項存儲在cookie中。

有許多問題通過的會議上審議一次:

    在負載均衡架構
  • ,如何服務器之間發送會話,或用戶保持在只有一臺服務器(粘性會話)
  • 如果發生了什麼服務器重新啓動(持久會話)?
  • 會話何時到期,到期時會發生什麼?

即使你已經到位的架構來管理,還有用,因爲他們需要的系統內存應保持在最低限度的會議,而存儲在數據庫中的狀態只需要磁盤空間,並且狀態存儲在客戶端只需要客戶端內存。

還有一個安全考慮,存儲在服務器上的狀態比存儲在客戶端的狀態更安全。

+0

Solubris,非常感謝你這麼詳細的解釋! – curious1