using HandlerInterceptor by Spring.You can also specifically choose to intercept specific requests. check this tutorial .This is all dependent on the version of Spring you are using.But this should give you a fair outlook into how to go about it.
package com.test.intercept;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class HttpRequestInterceptor extends HandlerInterceptorAdapter {
@Autowired
private ServletContext context;
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HandlerMethod handlerMethod = (HandlerMethod) handler;
String methodName = handlerMethod.getMethod().getName();
Map<String, String> headerMap = HttpUtil.getAllHeaders(request);
Boolean isAllowed=false;
//doing what you want to your json
//
return isAllowed;
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
logger.info("in after completion");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
logger.info("in posthandle");
}
and in your servletContext.xml add :
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/**" /> <!--to exclude a path -->
<mvc:exclude-mapping path="/web/**" /> <!--to exclude a path -->
<beans:bean class="com.test.interceptor.HttpRequestInterceptor"></beans:bean>
</mvc:interceptor>
</mvc:interceptors>