martes, 1 de julio de 2008

Modelo Vista-Controlador (MVC)

A partir del proyecto del repositorio 'eticom-discografica-servlet', me lo bajo pero con otro nombre: 'eticom-discografica-servlet-mvc'.

El MVC separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. En una web...
  1. la vista es la página HTML o JSP (el código que provee de datos dinémicos a la página)
  2. el modelo es el sistema de gestion de base de datos y la lógica de negocio, representa la información con la que opera el sistema
  3. el controlador es el encargado de recibir los eventos de entrada desde la vista y de responder a ellos (=genera el modelo y, a su vez, crea la vista en jsp de la página que va a representar la solicitud del usuario).
En el MVC vamos a utilizar un JSP por cada una de las páginas, y sólo un controlador, que es el que va a generar los modelos y controla la solicitud.
Un diagrama sencillo que muestra la relación entre el modelo, la vista y el controlador. Nota: las líneas sólidas indican una asociación directa, y las punteadas una indirecta (por ejemplo, patrón Observer).

Los flujos que se producen en el MVC es el siguiente:
  • El usuario genera una solicitud al controlador (p.e. pulsa un botón)
  • El controlador recibe la notificación de la acción que el usuario quiere realizar a través de la vista, y gestiona el evento que llega.
  • El controlador accede al modelo, al que actualiza o modifica dependiendo de la acción que el usuario solicita.
  • El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario, donde se reflejan los cambios en el modelo (el modelo no debe tener conocimiento directo sobre la vista)
  • La iterfaz de usuario espera nuevas solicitudes del usuario.
Si vemos el archivo web.xml, se ve que todas las solicitudes van a pasar por la página http://localhost:8080:controlador.

Para acceder a los atributos: ${requestScope.____}
Para acceder a los parámetros:
${param.____}

Si a ControladorFrontal.java le añado un nuevo atributo:
req.setAttribute("webmaster", "rafakatu@gmail.com");

...y en el index.jsp llamamos a ese atributo: ${requestScope.webmaster}
...si abrimos la http://localhost:8080/Controlador nos aparece ese atributo por pantalla.

Enlaces: wikipedia.

No hay comentarios: