JSP Model 2 es un patrón de diseño complejo utilizado en el diseño de aplicaciones web Java que separa la visualización de contenido de la lógica utilizada para obtener y manipular el contenido. Dado que el Modelo 2 genera una separación entre la lógica y la pantalla, generalmente se asocia con el paradigma modelo-vista-controlador (MVC). Si bien la forma exacta del "Modelo" MVC nunca fue especificada por el diseño del Modelo 2, varias publicaciones recomiendan una capa formalizada para contener el código del Modelo MVC. Los Java BluePrints , por ejemplo, recomendaron originalmente el uso de EJB para encapsular el modelo MVC.
En una aplicación Modelo 2, las solicitudes del navegador del cliente se pasan al controlador . El controlador realiza cualquier lógica necesaria para obtener el contenido correcto para su visualización. Luego coloca el contenido en la solicitud (comúnmente en forma de JavaBean o POJO ) y decide a qué vista pasará la solicitud. Luego, la vista muestra el contenido pasado por el controlador.
El modelo 2 se recomienda para aplicaciones de tamaño mediano y grande.
Historia
En 1998, Sun Microsystems publicó una versión preliminar de la especificación JavaServer Pages , versión 0.92. [1] En esta especificación, Sun estableció dos métodos mediante los cuales se podrían utilizar las páginas JSP. El primer modelo (denominado " modelo 1 " debido a su ordenamiento en el documento) era un modelo simplista en el que las páginas JSP eran entidades independientes e inconexas. La lógica podría estar contenida dentro de la propia página, y la navegación entre páginas se lograba típicamente mediante hipervínculos. Esto encaja con el uso común de la tecnología de plantillas.
ColdFusion y Active Server Pages son ejemplos de tecnologías contemporáneas que también implementaron este modelo.
El segundo modelo al que se hace referencia en el documento ("modelo 2" en el pedido) era un método mejorado que combinaba la tecnología de servlets con la tecnología JSP. La diferencia específica enumerada fue que un servlet interceptaría la solicitud, colocaría el contenido para representar en un atributo de solicitud (generalmente representado por un JavaBean) y luego llamaría a un JSP para representar el contenido en el formato de salida deseado. Este modelo difería del modelo anterior en el hecho de que la tecnología JSP se utilizó como un motor de plantilla puro. Toda la lógica se separó en un servlet, dejando al JSP con la responsabilidad exclusiva de generar la salida del contenido proporcionado.
En diciembre de 1999, JavaWorld publicó un artículo de Govind Seshadri titulado Comprensión de la arquitectura del modelo 2 de JavaServer Pages . [2] En este artículo, Govind logró dos hitos importantes en el uso del término "Modelo 2". El primer hito fue formalizar el término "Modelo 2" como un patrón arquitectónico en lugar de una de las dos opciones posibles. El segundo hito fue la afirmación de que el Modelo 2 proporcionaba una arquitectura MVC para software basado en web. [3]
Govind creía que debido a que la arquitectura del "Modelo 2" separaba la lógica de la JSP y la colocaba en un servlet, las dos piezas podían verse como la "Vista" y el "Controlador" (respectivamente) en una arquitectura MVC. Govind dejó abierta la parte "Modelo" de la arquitectura MVC, con la sugerencia de que casi cualquier estructura de datos podría cumplir con los requisitos. El ejemplo específico utilizado en el artículo fue una lista de vectores almacenada en la sesión del usuario.
En marzo de 2000, se lanzó el proyecto Apache Struts . Este proyecto formalizó la división entre Vista y Controlador y reclamó la implementación del patrón "Modelo 2". [3] Una vez más, la implementación del "Modelo" se dejó sin definir con la expectativa de que los desarrolladores de software llenasen una solución adecuada. La interacción con la base de datos a través de JDBC y EJB fueron opciones sugeridas en la página de inicio de Struts. Más recientemente, Hibernate , iBatis y Object Relational Bridge se enumeraron como opciones más modernas que podrían usarse para un modelo. [4]
Desde el lanzamiento de Struts, han aparecido varios marcos competidores. Muchos de estos marcos también afirman implementar el "Modelo 2" y el "MVC". Como resultado, los dos términos se han convertido en sinónimos en la mente de los desarrolladores. Esto ha llevado al uso del término "MVC Modelo 2" o "MVC2" para abreviar.
Conceptos erróneos
Un error común es que se requiere un patrón MVC formalizado para lograr una implementación del Modelo 2. Sin embargo, los Java BluePrints advierten específicamente contra esta interpretación: [5]
La literatura sobre tecnología de nivel web en la plataforma J2EE utiliza con frecuencia los términos "Modelo 1" y "Modelo 2" sin explicación. Esta terminología proviene de los primeros borradores de la especificación JSP, que describían dos patrones de uso básicos para las páginas JSP. Si bien los términos han desaparecido del documento de especificaciones, siguen siendo de uso común. El modelo 1 y el modelo 2 simplemente se refieren a la ausencia o presencia (respectivamente) de un servlet controlador que envía solicitudes desde el nivel de cliente y selecciona vistas.
Además, el término "MVC2" ha llevado a muchos a creer erróneamente que el Modelo 2 representa un patrón MVC de próxima generación. De hecho, MVC2 es simplemente una abreviatura del término "MVC Modelo 2". [6]
La confusión sobre el término "MVC2" ha llevado a una confusión adicional sobre el código del Modelo 1, lo que resulta en el uso común del término inexistente "MVC1".
Ver también
- Apache Struts es un marco de código abierto para implementar aplicaciones web basadas en una arquitectura Modelo 2.
Referencias
- ^ Especificación JSP 0.92
- ^ Seshadri, Govind (29 de diciembre de 1999). "Comprensión de la arquitectura JavaServer Pages Model 2" . JavaWorld . Consultado el 17 de julio de 2020 .
- ^ a b Cómo implementa Struts el modelo 2 (los orígenes del modelo 1 / modelo 2)
- ^ "Página de inicio de Struts 1.x" . Archivado desde el original el 23 de septiembre de 2010 . Consultado el 5 de octubre de 2010 .
- ^ Java BluePrints 4.4.1: Estructuración del nivel web
- ^ Struts, una implementación MVC de código abierto
enlaces externos
- Seshadri, Govind (29 de diciembre de 1999). "Comprensión de la arquitectura JavaServer Pages Model 2" . JavaWorld . Consultado el 17 de julio de 2020 .
- Una historia de MVC, incluido el modelo 2
- Patrones de presentación de ASP.NET : en este artículo, Dino Esposito analiza cómo Model2 también se usa en ASP.NET MVC.