Рубрики
Без рубрики

Как зарегистрировать фильтр сервлетов в Spring MVC

– Как зарегистрировать фильтр сервлетов в Spring MVC

Автор оригинала: mkyong.

В двух словах, фильтр сервлетов позволяет перехватывать запросы и ответы в вашем веб-приложении. В этой статье показано, как зарегистрировать фильтр сервлетов в Spring XML и JavaConfig.

1. Фильтр сервлетов

Просмотрите следующий пользовательский фильтр, он будет перехватывать любые исключения и перенаправлять на страницу с ошибкой.

package com.mkyong.form.web;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ErrorHandleFilter implements Filter {

	@Override
	public void destroy() {
		// ...
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		//
	}

	@Override
	public void doFilter(ServletRequest request, 
               ServletResponse response, FilterChain chain)
		throws IOException, ServletException {

		try {
			chain.doFilter(request, response);
		} catch (Exception ex) {
			request.setAttribute("errorMessage", ex);
			request.getRequestDispatcher("/WEB-INF/views/jsp/error.jsp")
                               .forward(request, response);
		}

	}

}

2. Весенний XML

В конфигурации Spring MVC + XML вы можете зарегистрировать фильтры с помощью web.xml

	
		errorHandlerFilter
		com.mkyong.form.web.ErrorHandleFilter
	
	
		errorHandlerFilter
		/*
	

3. Весенний JavaConfig

Весной MVC + Java Config + нет web.xml файл, вы можете зарегистрировать фильтры с помощью класса инициализатора.

package com.mkyong.form.config.servlet3;

import javax.servlet.Filter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import com.mkyong.form.config.SpringRootConfig;
import com.mkyong.form.config.SpringWebConfig;
import com.mkyong.form.web.ErrorHandleFilter;

public class MyWebInitializer extends
		AbstractAnnotationConfigDispatcherServletInitializer {

	//...

	@Override
	protected Filter[] getServletFilters() {
		return new Filter[]{new ErrorHandleFilter()};
	}
}

Рекомендации

  1. Фильтры сервлетов
  2. Основы фильтров

Оригинал: “https://mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/”