sábado, 7 de agosto de 2010

Conceptos Básicos de Struts 2

Bueno gente para comenzar mi primer post , les dejare un poco de teoría conceptos básicos que es lo mínimo que un estudiante que quiere aprender esta framework al menos en teoría debe conocer espero les sea de utilidad :

Struts 2

Apache Struts 2 es un elegante, extensible Framework para la creación de aplicaciones Web en Java. Este Framework está diseñado para simplificar el ciclo de desarrollo completo de aplicaciones web, desde la construcción, pasando por la implementación y mantenimiento de aplicaciones a lo largo del tiempo.

Cabe indicar que Struts está basado en el Patrón MVC (Modelo-Vista-Controlador).este framework fue originalmente conocido como WebWork 2. Que luego paso a fusionarse con Struts para lograr formar Struts 2 (ojo! para aclarar también existe una versión Struts 1 ) , trabajaremos bajo Struts 2 por que según mi propio criterio me parece un poco más sencilla que Struts 1 y porque en el curso de IWEB también se usa Struts 2 así que ni modo ... xD

  • Pero por que se usa M-V-C como patrón de diseño de las aplicaciones web?

o Porque es una arquitectura que busca reducir el acoplamiento dividiendo las responsabilidades en 3 capas claramente diferenciadas:

§ El modelo: que hace referencia a los datos que maneja la aplicación y las reglas de negocio que operan sobre ellos y que se traducen en Struts 2 en las acciones.

§ La vista: encargada de generar la interfaz con la que la aplicación interacciona con el usuario. En Struts 2 equivale a los resultados o mejor dicho los Jsp’s que se mostraran en pantalla.

§ El controlador: que comunica la vista y el modelo respondiendo a eventos generados por el usuario en la vista, invocando cambios en el modelo, y devolviendo a la vista la información del modelo necesaria para que pueda generar la respuesta adecuada para el usuario. El controlador se implementa en Struts 2 mediante el filtro FilterDispatcher

  • Pero porque usar Struts 2?

Bueno hay muchos puntos de vista pero yo pienso en lo particular que por que Struts permite reducir el tiempo de desarrollo no es muy tedioso como trabajar con Servlets (sobre todo en el mantenimiento de las aplicaciones ) aunque Struts se basa en la tecnología de Servlets, Struts es mucho más simple y fácil así que no se asusten muchachos es solo leer y practicarlo , esto se verá más adelante al momento de realizar sus ejemplo , pero como adelanto les diré recuerdan la conexión a un a BD en su curso de PAW , bueno aquí olvídense de programar un método para acciones de borrar , guardar , modificar, etc. , casi ni veremos a los famosos DriverManager, Resultset, preparedStatement entre otros .

Otro punto importante que nos interesa de sobre manera es que tiene carácter de "software libre" y su compatibilidad con todas las plataformas en las que Java Entreprise esté disponible lo convierten en una herramienta altamente disponible.

Con Struts 2 se introdujeron algunas mejoras sobre la primera versión, de cara a simplificar las tareas más comunes en el desarrollo de aplicaciones web, así como mejorar su integración con AJAX, etc.

  • Y se Preguntaran como Funciona Struts 2, y como lo hace, cual es la magia que debo aprender o cosas así, bueno allí les va….

Para no dejar los componentes definidos y no relacionados, y para mejorar el entendimiento del framework, vamos a explicar cómo funciona todo junto.

1. Llega un Request a la aplicación.

2. El Request es interpretador por el DispatcherFilter? y determina que Action y que conjunto de Interceptors invocar.

3. Cada Interceptor ejecuta sus acciones previas a la ejecución del método de Action a invocar

4. Es invocado el método del Action.

5. Cada Interceptor ejecuta sus acciones posteriores a la ejecución del método de Action a invocar

6. Se examina el resultado obtenido del Action y se determina el Result correspondiente.

7. Mediante el Result determinado se genera la vista, y según la configuración definida sobre él se invoca el proceso de generación de la vista.

8. La vista generada retorna al cliente

Y Cuáles son sus principales componentes pasare a describir un poco de ellos...

Los principales componentes de framework son:

ü DispatcherFilter

ü Interceptors

ü Actions

ü Results

Ø DispatcherFilter

Es el punto de entrada del framework. A partir de él se lanza la ejecución del procesamiento para cada request que involucre al framework. Sus principales responsabilidades son:

o Ejecutar los Actions

o Comenzar la ejecución de la cadena de interceptor

o Limpiar el ActionContext (para evitar memory leaks). El ActionContext es el contexto sobre el cual se ejecuta un Action.

Ø Interceptors

Son clases que siguen el patrón interceptor, Se encargan de interceptar la invocación a un Action. Permiten realizar operaciones antes y después de la invocación de un Action. También permiten evitar que un Action se ejecute, Nos sirve para realizar cierta funcionalidad que queremos aplicar a un conjunto de Actions.

Struts2 trae definidos un conjunto de interceptors por defecto, que le permite realizar un conjunto de acciones sobre los Actions.

Ø Actions

Los Actions serán lo encargados de ejecutar la lógica necesaria para manejar un request determinado.los Actions no están obligados a implementar o heredar de una interfaz o clase ya definida. Pueden ser POJOs. Igualmente, struts2 posee una interfaz Action. Esta interfaz permite definir el método por defecto que se ejecutará sobre el Action para que no tengamos que definirlo por otro medio.

También existe una implementación de esta interfaz, denominada ActionSupport, que nos provee funcionalidad de gran utilidad necesaria por un conjunto de Interceptors para poder manipular el Action a invocar.

Ø Results

Los Results son Objetos que encapsulan el resultado de un Action. Los Actions de la aplicación simplemente devolverán un String en sus métodos. Un Action puede devolver diferentes resultados luego de su ejecución. Cada uno de estos resultados se corresponde con un Result, previamente configurado en Struts2. La configuración de cada Result determina principalmente: el tipo de vista a mostrar (JSP, Velocity Templates, FreeMarker, entre otros), el recurso asociado a dicha vista, el nombre asociado al Result (mediante este y el resultado del Action se determina el Result a utilizar).

Herramientas que debemos utilizar?

Las Herramientas usadas en el curso de IWEB son:

o Netbeans 8.5

o Tools y Administrator de Mysql

o Contenedor de Aplicaciones Tomcat

o Librerías (estas las iré subiendo para que las descarguen dependiendo de la aplicación que desarrollemos )

o Oracle 10g (opcional)

Todas estas herramientas las pueden ir buscando en la web están libres para su descarga.

Y para acabar por el día de hoy daré una pequeña explicación de las librerías que utilizare en mi siguiente post, donde desarrollare el famosísimo Hola Mundo! Estas librerías son

o commons-logging.jar. Se trata de una librería genérica que nos posibilita el registro de sucesos (logging).

o freemarker.jar. Es un motor para trabajar con plantillas en nuestra parte de Vista.

o ognl.jar. Es una librería para trabajar con EL.

o struts2-core.jar. El núcleo de Struts2. Si la abres de casualidad fíate en el nombre de los paquetes.

o xwork.jar. Es un framework que nos proporciona Inversión de Control, EL, validaciones

o Commons-FileUpload.jar: agrega robustez y facilidad para el alto rendimiento de las aplicaciones webs.

Bueno gente este es mi primer aporte un poco de teoría para poder entender mejor la práctica no cae nada mal, espero que la lean y busquen en internet alguna duda vale la consulta se le responderá.

Por el día de hoy solo me queda agradecer a la gente por el tiempo que se dedican a aprender este framework y pedirles que si encuentran alguna duda o si pueden colaborar con alguna corrección o alguna sugerencia o crítica constructiva sobre el tema que se toco puesto que yo tampoco lo se todo y lo mas probable que me haya equivocado en algo pero se les agradece hacerme llegar su corrección y si es factible se realizara la corrección, alguna duda a mi email xxmanu23xx@gmail.com , esto es todo por el día de hoy gente suerte…!!!!

3 comentarios:

  1. Haber espero y no te molestes...jejeje
    Primero: hay una parte en la que dices que ya no se usará el DriverManager, ni el ResultSet esto no tiene nada que ver de hecho si vas a trabajar con JDBC tienes que usarlos si o si, no tienes otra opción.

    Segundo: dices que mejora la integración con AJAX y tampoco es asi, antes STRUTS 2 tenia unas librerias de AJAX ya incluidas las de dojo (framework para javascript/ajax basado en componentes) pero eran muy pocas las cosas que podias hacer y si querias hacer mas cosas, usando las librerias completas de dojo entraban como en conflicto unas con otras asi que decidieron mejor quitarlas y ponerlas como un plugin aparte.
    Tercero: dices que xwork porpociona EL y eso lo hace directamente al especificación JSP y dices que el commons-fileUpload agrega robustez y facilidad para el alto rendimiento de las aplicaciones web y no es cierto, es para cuando subes cosas al servidor, hasta su nombre lo dice :S (fileUpload: Subir archivos)

    Cuarto: No se de donde vas a sacar el netbeans 8.5

    Si me equivoco postea url donde corroboren lo q estas afirmando

    ResponderEliminar
  2. no me enojo , gracias por las aclaraciones , estamos para aprender y para compartir lo aprendido ... se le agradece.. y tratare en cuanto tenga tiempo de corregir...!

    ResponderEliminar
  3. a mi me agrada el tuto, lo del netebans 8.5 si me saco de honda jajaj pero felicidades amigo, gracias

    ResponderEliminar