2009-09-02 15 views
36

Jaki jest najlepszy sposób przechowywania danych związanych z sesją użytkownika (np. Dziennik ostatnich działań, które zrobił użytkownik) w aplikacji sieciowej Spring MVC (2.5)?Jak przechowywać sesję na wiosnę MVC

Używanie klasycznej javax.servlet.http.HttpSession lub określenie scope = "session" w komponentach kontrolera i przechowywanie danych w obiekcie sesji?

Odpowiedz

36

Ziarno sesyjne (przy użyciu scope="session") jest najczystszym podejściem. To eliminuje potrzebę interakcji z sesją.

Jeśli chcesz wyposażyć komponent bean o zakresie sesji w kontroler, musisz albo ustawić kontroler o zasięgu sesji, albo użyć proxy o ustalonym zakresie, aby podłączyć go do kontrolera pojedynczego, jako described here. Oba podejścia są prawidłowe.

+0

Dziękuję, czystsze podejście było dokładnie tym, czego szukałem – dakull

+1

Dziękuję za tę doskonałą odpowiedź, używałam HttpSession bezpośrednio do tej pory. Uruchamianie kontrolera żądanego kontrolera (np. Starego kontrolera odlotu) również działa i unika potrzeby stosowania proxy z ograniczeniami. Czy są jakieś wady? –

+4

@Dick: Ziarna o żądanym zakresie powodują obniżenie wydajności, ale dopóki twój kontroler nie ma drogiego, niestandardowego procesu inicjowania lub twój ruch nie jest zbyt wysoki, nie powinien być znaczący. – skaffman