Нет, если счетчик попаданий весной MVC
Я новичок в Spring MVC, и моя задача состоит в том, чтобы подсчитывать каждое попадание в Spring MVC. Я могу добиться этого в сервлете. Но не знаю, как этого добиться весной. Есть ли способ отслеживать каждый запрос? Заранее спасибо.
3 ответа
Попробуйте такой перехватчик
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++;
}
}
}
Попробуйте следующий код
1) Использование синхронизированного статического метода.
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) используя 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;
}
}
Как говорили другие люди, вы должны использовать Interceptor:
1) В uour dispatcher-servlet.xml добавьте:
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="xx.xx.xx.handlers.ViewInterceptor" />
</mvc:interceptor>
2) Java-код перехватчика:
@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
}
}