Dios no juega a los dados
Albert Einstein

[Struts] – Realizar una acción común en todos los action

Es posible que queramos realizar una misma acción común en un grupo de clases Action antes (o después) de realizar las acciones particulares de cada clase Action.

Ejemplos típicos como las validaciones o la autentificación del usuario que navega es posible realizarlas más eficientemente utilizando Struts Validator las primeras y la segunda con otras soluciones para implementar la política de seguridad requerida ya discutidas aquí. Otros ejemplos podría ser auditoria o validaciones cruzadas.

La manera de implementar la acción comun es implementar una clase Action que será el padre del resto, BaseAction. En el método execute (en general, porque según la arquitectura de la aplicación podremos implementar otras acciones como consultar, consultarTodos, editar, visualizar, validar, guardar…) implementamos la acción común. A continuación, ejecutamos un método abstracto, doExecute, que es el que implementará la acción particular de cada clase Action que extienda de BaseAction.

 

public abstract class BaseAction extends Action {

    public final ActionForward execute(

       ActionMapping mapping,

       ActionForm form,

       HttpServletRequest request,

       HttpServletResponse response)

    throws Exception {

        HttpSession session    = request.getSession();

        Usuario usuario        = (Usuario) session.getAttribute(Constantes.USER_KEY);

 

        // redirigimos a la entrada de la zona autenticada

        if (usuario == null) return (mapping.findForward("logon"));

 

        return doExecute(mapping, form, request, response, usuario);

    }

 

    public abstract ActionForward doExecute(

       ActionMapping mapping,

       ActionForm form,

       HttpServletRequest request,

       HttpServletResponse response,

       Usuario usuario) throws Exception;

}

[tags]J2EE, Struts, seguridad[/tags]

No related posts.

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta