Нет, если счетчик попаданий весной 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
  }

}

Другие вопросы по тегам