Reputation: 237
Am new to Spring MVC and my task is need to count every hit in spring MVC. Am able to achieve this in Servlet. But no idea how to achieve this in spring. Is there any way to track every request?. Thanks in advance.
Upvotes: 1
Views: 1404
Reputation: 814
try following code
1)Using synchronized static method.
public class RequestProcessingInterceptor extends HandlerInterceptorAdapter {
private static int count = 0;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
incrementCount();
return true;
}
public static synchronized void incrementCount() {
count++;
System.out.println("[requestCount]" + count);
}
}
2)using AtomicInteger
public class RequestProcessingInterceptor extends HandlerInterceptorAdapter {
private final static AtomicInteger count = new AtomicInteger(0);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
count.incrementAndGet();
System.out.println("[---count---]" + count);
return true;
}
}
Upvotes: 1
Reputation: 2301
As other people said, you should use Interceptor:
1) In uour dispatcher-servlet.xml add:
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="xx.xx.xx.handlers.ViewInterceptor" />
</mvc:interceptor>
2) Interceptor java code:
@Service
public class ViewInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) throws Exception {
... do some pre stuff
}
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView model) throws Exception {
... do some post stuff
}
}
Upvotes: 0
Reputation: 766
Try an interceptor like this
public class RequesInterceptor extends HandlerInterceptorAdapter {
private static Object lock = new Object();
private static int count = 0
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException {
synchronize(lock){
count++;
}
}
}
Upvotes: 2