Interceptores de Spring

Interceptores de Spring

Los interceptores de Spring tiene la capacidad de manejar las peticiones antes y después del envió web. Cada clase de interceptor debe extender la clase HandlerInterceptorAdapter. Aquí vamos a crear un interceptor de registrador mediante la ampliación del HandlerInterceptorAdapter. Puede reemplazar cualquiera de los tres métodos de devolución de llamada preHandle (),
postHandle () y afterCompletion (). Como sus nombres indican el método preHandle () se llamará antes de manipular la solicitud request, el
método de postHandle () será llamado después de manipular la solicitud request y el método afterCompletion () será llamado después de la prestación de la vista.

En cada método que va a registrar la información de uso de log4j. En primer lugar una instancia del registrador en el contexto estático, a continuación, establecer la configuración básica para que los mensajes de registro se cerrará la sesión en la consola.
La clase LoggerInterceptor se muestra a continuación.

LoggerInterceptor.java

package com.amalakaky.interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.BasicConfigurator;

import org.apache.log4j.Logger;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public
class
LoggerInterceptor
extends HandlerInterceptorAdapter {

    static Logger logger = Logger.getLogger(LoggerInterceptor.class);

    static{

        BasicConfigurator.configure();

    }

    

    @Override

    public
boolean preHandle(HttpServletRequest request,

            HttpServletResponse response, Object handler) throws Exception {

        logger.info(“Antes de manipular la solicitud request”);

        return
super.preHandle(request, response, handler);

    }

    

    @Override

    public
void postHandle(HttpServletRequest request,

            HttpServletResponse response, Object handler,

            ModelAndView modelAndView) throws Exception {

        logger.info(“Despues de manipular la solicitud request”);

        super.postHandle(request, response, handler, modelAndView);

    }

    

    @Override

    public
void afterCompletion(HttpServletRequest request,

            HttpServletResponse response, Object handler, Exception ex)

            throws Exception {

        logger.info(“Antes de redurigir a la Vista”);

        super.afterCompletion(request, response, handler, ex);

    }

}

Ahora, el interceptor de registrador se crea es necesario asociar este interceptor con la asignación de controlador. Aquí usamos BeanNameUrlHandlerMapping, en caso que usted está usando más de una asignación de controlador es necesario asociar el interceptor con cada uno de ellos. El código siguiente muestra cómo asociar un interceptor con la asignación de controlador.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<beans
xmlns=http://www.springframework.org/schema/beans&#8221;

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;

    xmlns:p=http://www.springframework.org/schema/p&#8221;

    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&#8221;>

    <bean
id=“viewResolver”
class=“org.springframework.web.servlet.view.InternalResourceViewResolver”
p:prefix=“/WEB-INF/jsp/”
p:suffix=“.jsp”
/>


<bean
id=“handlerMapping”
class=“org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”
p:interceptors-ref=“loggerInterceptor”
/>


<bean
id=“loggerInterceptor”
class=“com.amalakaky.interceptor.LoggerInterceptor”
/>


<bean
id=“userService”
class=“com.amalakaky.servicio.UserServiceImpl”
/>

    

    <bean
name=“/userRegistration.htm”
class=“com.amalakaky.web.UserController”
p:userService-ref=“userService”
p:formView=“userForm”
p:successView=“userSuccess”
/>

</beans>

Cuando se ejecuta el ejemplo que usted puede ver los mensajes de registro mostrados por la consola.

Ahora vamos a hacer lo mismo pero con anotaciones

Si está utilizando las anotaciones de Spring en el controlador, el único cambio que tiene que hacer para el ejemplo anterior es la configuración del interceptor. En el archivo de configuración de Spring en lugar de utilizar BeanNameUrlHandlerMapping
o cualquier uso manipulador de mapa usaremos DefaultAnnotationHandlerMapping. El archivo de configuración se muestra a continuación.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<beans
xmlns=http://www.springframework.org/schema/beans&#8221;

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;
xmlns:p=http://www.springframework.org/schema/p&#8221;

    xmlns:context=http://www.springframework.org/schema/context&#8221;

    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&#8221;>

    

    <bean
id=“viewResolver”
class=“org.springframework.web.servlet.view.InternalResourceViewResolver”
p:prefix=“/WEB-INF/jsp/”
p:suffix=“.jsp”
/>


<bean
class=“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping”
p:interceptors-ref=“loggerInterceptor”
/>


<context:component-scan
base-package=“com.amalakaky.web”
/>


<bean
id=“loggerInterceptor”
class=“com.amalakaky.interceptor.LoggerInterceptor”
/>


<bean
id=“userService”
class=“com.amalakaky.servicio.UserServiceImpl”
/>

        

</beans>

Anuncios
Minientrada | Esta entrada fue publicada en Spring. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s