Spring MVC (Handler) Interceptor
Below are the HandlerInterceptor methods.
HandlerInterceptor Methods:
- preHandle(): Runs before to calling the target handler.
- postHandle(): This function is called after the target handler but before the view is rendered by the DispatcherServlet.
- afterCompletion(): Callback when request processing and display rendering being finished.
Create a HandlerInterceptor
The org.springframework.web.servlet.HandlerInterceptor interface must be implemented by a class before it can be used as a HandlerInterceptor.
LogFilter:
Java
@Component public class LogFilter implements Filter { private Logger logger = LoggerFactory.getLogger(LogFilter. class ); @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { logger.info( "Hello from: " + request.getLocalAddr()); chain.doFilter(request, response); } } |
LogInterceptor:
Java
public class LogInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(LogInterceptor. class ); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info( "preHandle" ); return true ; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { logger.info( "postHandle" ); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { logger.info( "afterCompletion" ); } } |
Spring MVC – Servlet Filter vs Handler Interceptor
Filter is a Java class that is executed by the Servlet Container for each incoming HTTP request and each HTTP response. Filter is associated with the Servlet API, while HandlerIntercepter is unique to Spring. Only after Filters will Interceptors begin to operate. HandlerInterceptors are appropriate for fine grained pre-processing duties (authorization checks, etc.).
Contact Us