| Registrar a un usuario en un sitio Web (MVC) |
| Paso 1: Flujo de ejecución siguiendo el patrón Modelo-Vista-Controlador |
Cuando Sun introdujo las páginas JSP definió dos modelos para crear aplicaciones Web basadas en JSPs. Los dos modelos son conocidos como Modelo 1 y Modelo 2
Modelo 1
- fue la primera implementación que se produjo cuando las páginas JSP fueron introducidas
- una petición es realizada a un JSP o Servlet y entonces dicho JSP o Servlet se hace cargo de todas las responsabilidades de la petición
- como por ejemplo procesamiento de la petición, validación de los datos, manejo de la lógica de negocio y generación de la respuesta
- esta arquitectura no es adecuada para aplicaciones de gran escala porque
- una gran cantidad de funcionalidad se repite en varios JSPs o Servlets
- la lógica de negocio y la presentación se ven irremediablemente unidas
- y esto complica las cosas cuando queremos introducir una nueva vista
Modelo 2
- es más conocido como patrón de diseño MVC (Modelo Vista Controlador)
- una petición es realizada a uno o más Servlets , conocidos como Controladores, que recibe todas las peticiones de la aplicación
- el Controlador entonces procesa la petición e interactúa con el Modelo para preparar cualquier dato que la Vista pueda necesitar y entonces redirige la respuesta hacia una página JSP. Entonces la página JSP utiliza los datos preparados por el Controlador para generar una respuesta al Navegador
- esta arquitectura es adecuada para aplicaciones de gran escala porque
- separa claramente la lógica de negocio y la de presentación
- facilitando de esta forma:
- la utilización de diferentes vistas para la misma aplicación
- la reutilización de código.
Componentes de la Arquitectura Modelo-Vista-Controlador
- Componentes del Modelo
- proveen un desacoplamiento para los datos y/o servicios utilizados por una aplicación
- de esta forma, los Componentes del Controlador no tienen incrustado código encargado de manipular los datos de una aplicación de forma innecesaria
- en vez de esto, los Componenetes del Controlador se comunican con los Componentes del Modelo para que estos últimos realicen el acceso a los datos y su manipulación
- proveen la lógica de negocio de la aplicación
- pueden ser JavaBeans o EJBs (Enterprise Java Beans)
- Componentes de la Vista
- proveen la respuesta al Navegador
- es decir proveen lo que el usurario ve
- acostumbran a ser páginas JSP, pero puede ser cualquier otra tecnología
- Componentes del Controlador
- acostumbran a ser Servlets que reciben peticiones y manejan el flujo de los datos entre los Componentes del Modelo y los Componentes de la Vista
- por lo tanto, éstos controlan la forma en que los Componentes del Modelo y de la Vista interactúan
- en muchas ocasiones los Controladores utilizan Clases Ayudantes (Helper Classes ) para delegar el control de peticiones específicas o procesos puntuales
Este es el flujo de ejecución de nuestro ejemplo cuando un usuario se quiere registrar a un Sitio Web siguiendo el patrón de diseño MVC (Modelo-Vista-Controlador).

- 1. Petición
- el usuario rellena un formulario y hace clic sobre el botón

- el Servlet FormularioFachadaControladorServlet realizando funciones de Controlador para el golpe y recibe la petición
- 2.1. Propagación datos formulario
- el Servlet FormularioFachadaControladorServlet traspasa todos los datos introducidos en el formulario al JavaBean ValidadorDatosBean
- 2.2. Validar datos formulario
- seguidamente el Servlet interroga al JavaBean para saber si los datos introducidos por el usurario han sido correctos
- 3a. Datos correctos
- si los datos han sido correctos entonces se redirige (forward) el flujo hacia la página JSP datosRegistrados.jsp
- 3b. Datos incorrectos
- si los datos no han sido correctos entonces se redirige (forward) el flujo hacia la página JSP index.jsp
- 4. Obtención de datos y mensajes de error
- antes de realizar la respuesta, la página index.jsp tiene que conversar con el JavaBean para rellenar los datos qe habían sido introducidos por el usuario y también mostrar mensajes de error allí donde los hubiere
- 5. Respuesta
- finalmente el usuario recibe una nueva página JSP con los datos que ya había introducido con anterioridad con uno o varios mensajes de error