Abr 30 2009

Tomcat (VIII): patrón Modelo – Vista – Control

Categoría: DAD,InformáticaMiguel Angel @ 19:26

TomcatYa llevamos con esta 8 entradas sobre Tomcat donde se han explicado diferentes funcionalidades. Pero tal vez nos falta una visión global de como implementar una aplicación web.

Existen muchas opciones pero tal vez la más recomendable sea aplicar el patrón Modelo-Vista-Control. ¿Y en que consiste? Pues muy fácil, que todas las peticiones pasen por un único punto, Control, que dependiendo de la acción a realizar ejecutará un modelo u otro. Este modelo redirige la petición hacia la vista (una JSP) correspondiente.

El siguiente diagrama de secuencia representa este escenario.

modelo_vista_control1

El navegador hace una petición al Control indicándole por parámetro que acción quiere ejecutar. En el ejemplo es aquella que está identificada con el 43. Con ese identificador el servlet deberá obtener la clase que implementa la acción, crear una instancia y ejecutar el método correspondiente.

clases-modelo_vista_control

Por ejemplo, si nosotros tenemos establecido en la base de datos o en un fichero de propiedades que la acción 43 está implementada por la clase ModeloMostrarClientes. El servlet mediante reflexión creará una instancia de dicho objeto e invocará el método ejecutar:

String clase = (bbdd o fichero propiedades).getClaseParaEsteId(idAccion);
Modelo m = (Modelo) Class.forName(clase).newInstance();
m.ejecutar();

En la primera linea se recupera el nombre de la clase para ese id (ucam.modelos.ModeloMostrarClientes). En la segunda se crea una instancia de la clase que por polimorfismo puede estar ligada a una variable de la clase padre, Modelo. En la última lo que hacemos es invocar el método ejecutar de la clase Modelo pero realmente se está ejecutando en la instancia de la subclase (ModeloMostrarClientes).

¿Que hemos ganado con esto? Independizar el servlet Control de la acción que se ejecuta en cada momento. Si nosotros establecemos que el id 29 se corresponde con ModeloInsertarCliente sólo tendremos que llamar al servlet pero con el parámetro idAccion con dicho valor. Además, si queremos añadir nueva funcionalidad sólo tendremos que heredar de Modelo e implementar el método ejecutar con la funcionalidad deseada.

Ya sólo queda redirigir a la JSP que genera la página. Existen dos opciones: que el método ejecutar reciba como parámetro la petición (HttpServletRequest) para hacer el forward o que devuelva una cadena con la página y que sea el servlet el que haga el forward.

Etiquetas: ,

Dejar una respuesta