Filters con Spring

De Spring Peru Wiki

Inicio

Configuración

Configuración del archivo web.xml: Se declara el filter authenticationFilter, la clase es org.springframework.web.filter.DelegatingFilterProxy. Esta clase realiza la integración con el ApplicationContext de Spring delegando la implementación del filtro a un bean configurado por Spring.

<web-app>
        <!-- ... -->
	<filter>
		<filter-name>authenticationFilter</filter-name>
		<filter-class>
			org.springframework.web.filter.DelegatingFilterProxy
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>authenticationFilter</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping>
        <!-- ... -->
</web-app>


Configuración del ApplicationContext de Spring: Se declara el bean authenticationFilter, notar que el nombre del bean debe ser el mismo del declarado en filter-name del archivo web.xml.

<beans>
	<bean id="bapiExecutionService" 
		class="com.alicorp.mind.framework.service.impl.BapiExecutionServiceImpl" />

	<bean name="authenticationFilter"
		class="com.alicorp.mind.framework.web.filter.AuthenticationFilter"
		parent="bapiExecutionTemplate">
		<property name="bapiExecutionService"
			ref="bapiExecutionService" />
	</bean>
</beans>

Implementación del filtro: Se ha seleccionado OncePerRequestFilter como clase base del filtro. Esta clase garantiza que el filtro sea ejecutado una sola vez por request.

public class AuthenticationFilter extends OncePerRequestFilter {
	private final Log log = LogFactory.getLog(AuthenticationFilter.class);

	private BapiExecutionService bapiExecutionService;

	protected void doFilterInternal(HttpServletRequest request,
			HttpServletResponse response, FilterChain chain)
			throws ServletException, IOException {
		// Implementacion del filtro ...
	}

	public void setBapiExecutionService(
			BapiExecutionService bapiExecutionService) {
		this.bapiExecutionService = bapiExecutionService;
	}
}

--Lshimokawa 18 feb 2008

Herramientas personales
actividades
publicidad