2011-01-05 10 views
7

Vengo de una experiencia con frameworks MVC y recientemente comencé a interesarme en Spring. Creo que es un buen marco, por lo que he visto hasta ahora. De todos modos, en mis experiencias pasadas estaba acostumbrado a un estilo de programación diferente, especialmente para la estructura de los controladores. La forma en que solía emplear controladores era diferente. Por supuesto, solía mapear de alguna manera una solicitud para ellos (piense en estructuras con varias acciones), pero luego lo que realmente me gustó fue que podía pasar acciones a otros controladores, entonces ellos seguirían siendo el controlador "activo" y esos serían responsables de manejar la próxima solicitud, puede venir de una solicitud HTTP o de otra cosa. Disfruté esto porque era muy bueno mantener el estado de una sesión de usuario de forma automática, haciendo que el código esté limpio y separando las diferentes situaciones en diferentes controladores. Ahora leí Spring Web MVC y los documentos solo hablan sobre los controladores que responden a las solicitudes, pero no mantienen el estado y no hay información sobre el encadenamiento de los controladores (aparte del reenvío) y la retención del estado.Programación de controladores de primavera

¿Cómo maneja estos temas en la primavera, hay alguna manera diferente, o debo implementar mis propios controladores con estado y clases de estado/acción?

Espero que mi pregunta sea lo suficientemente clara y me disculpo por su amplitud.

+0

¿En qué situaciones desearía tener controladores de encadenamiento como este? – OrangeDog

+0

Normalmente relaciono cada actividad simple con un controlador, de modo que puedo aislar la lógica de esa acción (una cantidad de consultas, vistas y manipulaciones de datos).Luego, cuando el usuario ingresa a otra actividad, generalmente reenvió todo al controlador que lo hace. Por lo tanto, es más fácil de mantener y puede reutilizar el código. – gotch4

+0

Pongamos un ejemplo: supongamos que tengo un controlador que se encarga de mostrar una vista con números de teléfono y le permite elegir, agregar, editar o eliminarlos. En cualquier situación en la que necesite elegir un número en mi aplicación, reenviaré a este controlador y luego devolveré el número elegido. Eso es lo que quise decir – gotch4

Respuesta

5

En Spring MVC puede usar los controladores sin estado reenviando la solicitud/invocando beans de ámbito de sesión.

Pero si esta es una buena idea o no depende en gran medida de su caso de uso. - Haría esto solo si hubiera solo algunos de estos controladores "extraños". - Si tiene muchos de ellos, creo que vale la pena buscar otra solución. (por ejemplo, JSF con Spring)

+0

Ejemplo de granos con ámbito de sesión? – gotch4

+1

Los beans con ámbito de sesión son beans (a.k.a. beans Java) que se almacenan en la HttpSession. Lea esto: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-arguments – DwB

8

En Java, la diferencia entre los marcos web con estado/sin estado suele describirse como la diferencia entre los marcos basados ​​en acciones y los basados ​​en componentes.

Ambos enfoques son válidos, pero por lo general cuando se elige un marco que hay que contentarse con el camino de ese marco de hacerlo:

Marcos

populares de acción:

populares de componentes marcos:

(No son de Cour muchos más, en ambas categorías)

+0

Gracias, pero no estoy eligiendo un marco, quiero usar Spring, por lo que mi pregunta era más sobre prácticas de programación en Spring – gotch4

+0

@ gotch4 Gracias? Entonces, ¿un voto a la baja es tu manera de decir gracias? –

+0

@ gotch4 y yo respondimos tu pregunta. La respuesta es "Spring MVC no funciona de esa manera" –

Cuestiones relacionadas