Os interceptors são os filtros do Spring. Eles são executados sempre que há uma requisição. Assim, é possível interceptar uma chamada antes de processa-la e fazer algumas verificações, permitindo ou bloqueando o fluxo da requisição.
Para criar um interceptor, deve-se estender HandlerInterceptorAdapter
e sobrescrever um dos seus métodos.
Geralmente o preHandle
é o método mais utilizado, pois ele é executado antes da requisição ser processada. Para continuar com o processamento da requisição deve-se retornar true
. Caso contrário, false
bloqueará o fluxo da requisição.
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest req,HttpServletResponse res,
Object controller) throws Exception {
return true;
}
}
Mas somente criar o interceptor não fará a requisição ser interceptada. Para que o Spring conheça os interceptors criados, é necessário registrar os mesmos no spring-context.xml
através da tag <mvc:interceptors>
<mvc:interceptors>
<bean class="endereco.da.classe.interceptor.no.pacote" />
</mvc:interceptors>
Após este registro, o Spring está apto a interceptar as requisições.
É interessante que, dentro do interceptor, seja verificada a URL da requisição para tratar quais endereços serão interceptados e quais regras serão aplicadas.