2009-09-02 21 views
36

¿Cuál es la mejor forma de almacenar datos relacionados con la sesión de un usuario (como, por ejemplo, un registro de acciones recientes que ha realizado un usuario) en una aplicación web Spring MVC (2.5)?Cómo almacenar la sesión en Spring MVC

¿Cómo usar el clásico javax.servlet.http.HttpSession o especificando scope = "session" en los beans del controlador y almacenando los datos en un objeto de sesión?

Respuesta

36

beans de ámbito de sesión (utilizando scope="session") es el enfoque más limpio. Esto elimina la necesidad de interactuar con la sesión usted mismo.

Si desea Autowire un bean de sesión con ámbito en el controlador, que sea necesario para que el controlador de ámbito de sesión en sí, o utilizar un proxy con ámbito de unirlo en un controlador único, como described here. Cualquiera de los enfoques es válido.

+0

gracias, un enfoque más limpio fue exactamente lo que estaba buscando – dakull

+1

Gracias por esta excelente respuesta, he estado usando la HttpSession directamente hasta ahora. Hacer que la Solicitud del Controlador tenga un alcance (es decir, el Controlador Throwaway anterior) también funciona y evita la necesidad del alcance del proxy. ¿Hay algún inconveniente en esto? –

+4

@Dick: los beans con ámbito de solicitud tienen una penalización de rendimiento, pero mientras su controlador no tenga un costoso proceso de inicio personalizado o su tráfico no sea demasiado alto, no debería ser significativo. – skaffman

Cuestiones relacionadas