Spring MVC interceptor HandleInterceptorAdapter example

Sometimes you need to intercept incoming request and do some preprocessing or you need to do it after completion of request. It is very much similar to filters that we use with servlet.
There are two ways to use interceptor with Spring MVC.

We can implement HandlerInterceptor interface to use interceptor. It has three methods which we need to implement.

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) : This method is executed before request is handed over to handler method.

If you notice it has boolean return type. If this method returns true, then it will go to other interceptors or to handler method. If this method returns false then this request is handled by interceptor only and we should use response object to send back to client.

ModelAndView modelAndView) : This method is called when handler method has completed its process but dispatcherServlet is yet process the view. This method can be use to add some model view objects that can be used in view. It can be done by adding object to modelAndView object.

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) : This method is called after view is render and request is completely processed.

HandlerInterceptorAdapter class:

Issue with HandlerInterceptor is that you need to implement all the methods but if you extend to abstract class called HandlerInterceptorAdapter, you can implement only those method which you want and other methods will have default implementation.

Configuring spring mvc application

Now we need to configure two files “web.xml” and “springmvc-dispatcher-servlet.xml” We need to declare DispatcherServlet in web.xml for spring MVC. When DisplatcherServlet is initialized,spring tries to load application context from [servlet name]-servet.xml file. So in this case, it will be try to load springmvc-dispatcher-servlet.xml.