Trabajamos no solo para producir, sino para dar valor al tiempo.
Eugène Delacroix

[Struts] – Input y Forwards de un Action

Se entiende por input es el Framework de Struts como la URL origen de una petición (request). La petición puede validarse o no; en caso de que se valide y no supere la validación, el flujo se devuelve al input, y en caso contrario se entrega la petición a la clase action que le corresponda.

El action se encargará de entregar la petición a la capa de negocio para que la procese, y en función del resultado que se obtentega de este proceso, la clase action entregará la respuesta (response) a la URL que le corresponda. Estas URLs entre las que puede elegir el action para entregar la respuesta son conocidas como forwards.

struts-flujo.JPG

Es decir, tanto input como forward son URLs: pueden ser desde una página HTML, como una imagen, un documento PDF… incluso también una acción de Struts (.do) !, que no dejan de ser URLs que apuntan a una servlet (incluso podemos pasar parámetros). Por ejemplo:

<forward name="validar" path="/comprobarValidacionBalance.do?validar=false"/>

Si utlizamos el Framework de Tiles, además de URLs podemos utilizar el nombre de una tile como input / forward. El controlador (org.apache.struts.tiles.TilesRequestProcessor) las diferencia porque el path no comienza por "/". Recomiendo que el nombre de la tile comience por mayúsculas para que los que lean el fichero struts-config.xml de tu aplicación las diferencien más fácilmente. Por ejemplo:

<forward name="firma" path="FirmaElectronica"/>

El mismo recurso puede ser considerado input de un action y forward de otro, o incluso forward del mismo action. 

Best Practice ?

Me pregunta minifreak en [Struts Validator] – input en struts-config.xml si considero que es una best practice que tanto input como forward se refieran a acciones y no a JSPs (o tiles). Entiendo que la pregunta viene sobre todo por temas de seguridad (comprobar que el usuario de navegación sea válido antes de permitirle ver una JSP) y otras posibles operaciones comunes a todas las peticiones. La respuesta es muy propia mia :ni sí ni no, simplemente responde a la necesidad.

Redirigir a una acción consume más recursos del servidor y el tiempo de respuesta se incrementa. Aunque hoy día esto no representa un gran problema por la gran capacidad y mínimo tiempo de proceso de los servidores, YO únicamente pongo una acción si ese consumo de recursos es justificado y necesario. No todo tiene que pasar por Struts obligatoriamente.

Por ejemplo, en una típica pantalla de login, en el input de la acción que comprueba si el usuario es válido yo pondría simplemente la URL de la pantalla o el nombre de la Tile: no es necesario procesar nada en el servidor.

Si una pantalla es mi input es porque el usuario de navegación ya ha llegado allí, por tanto ha sido autorizado previamente. Y si nos referimos al forward, el action acaba de comprobarlo. Si quieres ser totalmente estricto con la seguridad SÍ necesitarías pasar por el servidor, y como complemento, podrías evitar mediante un filtro en tu web.xml los accesos a todos los recursos que no fuesen actions (.do) de tu aplicación.

En el típico formulario partido de varias páginas, si quieres guardar e ir a la siguiente pantalla, necesitas que la salida del action de guardar la pantalla actual apunte a un action que carge los datos del siguiente formulario.

[tags]J2EE, Struts, flujo[/tags]

No related posts.

6 Comentarios hasta el momento »

  1. deloko dijo

    7 de March del 2008 a las 1:16 pm

    vaya cuelgue maaaaxo

  2. Manu dijo

    7 de March del 2008 a las 2:38 pm

    Cómo se puede evitar con un filtro el acceso a todos los recursos que no sean .do?? Gracias!

  3. yoyoooyoy dijo

    8 de March del 2008 a las 12:32 pm

    En breve intentaré sacar tiempo para escribir un post sobre tu duda Manu
    Espero que este post te resuelva la duda: Evitar el acceso a recursos web. Si no es así, no dudes en poner otro comentario

  4. Lycka Bonita » Evitar el acceso a recursos web dijo

    10 de March del 2008 a las 10:08 am

    [...] Manu en [Struts] – Input y Forwards de un Action cómo se puede evitar con un filtro el acceso a todos los recursos que no sean acciones en [...]

  5. Nuestra primera acción con Struts 1.3.8 | Lycka Bonita dijo

    2 de December del 2008 a las 9:35 am

    [...] base, nos hemos empollado bien la teoría y sabemos lo que es el patrón MVC, sabemos cómo funciona el Framework de Struts, cómo implementa el patrón MVC y cómo se [...]

  6. Mauro dijo

    5 de February del 2010 a las 4:31 am

    Gracias, de verdad, se valora mucho a la gente que realiza este tipo de tutoriales para novatos como yo. Espero que todos se animen a publicar en un blog lo poco o mucho que sepan, por mas q ya este en otro lado, porque es la quinta vez q termino en esta pagina, aunque haya tanta documentacion dando vuelta.
    Saludos!

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta