Bienvenido a re-orientation! Esperamos que encuentres lo que buscas

Definiendo el comportamiento de la aplicación

Parte del Manual para la creación, paso a paso, de una aplicación web Java MVC totalmente operativa sin el uso de frameworks


Una vez transferido el control a AccionProxy, este objeto se encarga de crear una instancia en tiempo de ejecución de la clase que modela la acción que se solicita desde la vista.

Para saber que clase (o clases) se deben instanciar, AccionProxy se sirve de un fichero de parámetros con las siguientes características

El fichero de propiedades de la aplicación.

acciones.properties: Es un fichero de propiedades (con estructura clave = valor) donde se declara para cada acción definida en la aplicación, la clase java que modela la funcionalidad asociada. Además aquí se declara que hacer cuando se termine de ejecutar la funcionalidad solicitada en un inicio. Accediendo a estas relaciones del fichero de propiedades, AccionProxy obtiene la información que necesita para operar.

La información que declararemos en el fichero de propiedades para cada funcionalidad que brindamos (cadena "nombre de acción"), estará en 5 líneas con las siguientes características:

  • "nombre de acción".srcAction: Ruta completa de la clase que modela la acción y encapsula el código a ejecutar.
  • "nombre de acción".true.resultType: Describe, en caso que la acción se ejecute satisfactoriamente, si a continuación se debe ejecutar otra acción o redirigir a la vista. Tiene los valores, action para acción, html y jsp para vistas.
  • "nombre de acción".true.resultValue: Describe, en caso que la acción se ejecute satisfactoriamente, el nombre de la nueva acción a ejecutar o del contenido web a generar
  • "nombre de acción".false.resultType: Describe, en caso que la acción no sea satisfactoria o produzca un resultado inesperado, si a continuación se debe ejecutar otra acción o redirigir a la vista. Tiene los valores, action para acción, html y jsp para vistas.
  • "nombre de acción".false.resultValue: Describe, en caso que la acción no sea satisfactoria o produzca un resultado inesperado, el nombre de la nueva acción a ejecutar o del contenido web a generar

El fichero de propiedades que usaremos para ilustrar el funcionamiento en el ejemplo de este tutorial es el siguiente:

listarLibrosDeCuentoDisponibles.srcAction = com.ro.ejercicioMVC.acciones.ListarLibrosCuento
listarLibrosDeCuentoDisponibles.true.resultType = action
listarLibrosDeCuentoDisponibles.true.resultValue = listarCualquierLibroDisponible
listarLibrosDeCuentoDisponibles.false.resultType = html
listarLibrosDeCuentoDisponibles.false.resultValue = respuestaInesperada.html

listarCualquierLibroDisponible.srcAction = com.ro.ejercicioMVC.acciones.ListarOtrosLibros
listarCualquierLibroDisponible.true.resultType = jsp
listarCualquierLibroDisponible.true.resultValue = respuesta.jsp
listarCualquierLibroDisponible.false.resultType = html
listarCualquierLibroDisponible.false.resultValue = respuestaInesperada.html

En este ejemplo estamos declarando que ListarLibrosCuento.java (que está en el classpath com.ro.ejercicioMVC.acciones) es la clase que modela la funcionalidad solicitada por la acción llamada "listarLibrosDeCuentoDisponibles" y que una vez el objeto ejecute esta funcionalidad correctamente, invocaremos a una nueva acción encadenada, la acción "listarCualquierLibroDisponible".

Por su parte declaramos aquí que "listarCualquierLibroDisponible" está modelada por la clase ListarOtrosLibros.java (también en el classpath com.ro.ejercicioMVC.acciones), y que al finalizar su ejecución correctamente, se redirija a la página respuesta.jsp donde previsiblemente se mostrarán los resultados de ambas acciones.

Si la ejecución de alguna de estas acciones diera un resultado inesperado, redirigiremos al usuario hacia la página "respuestaInesperada.html".

Controlando estas propiedades podemos cambiar el flujo de ejecución de la aplicación de manera sencilla, así como añadir nuevas funcionalidades (acciones) a nuestro ejemplo, e integrarlas con las existentes de manera clara y sin un coste excesivo para el desarrollado.

Terminos Tecnología: