Używam samouczka serwletu Java EE i wypróbowałem numer mood example. Zauważyłem, że doFillter jest wywoływany dwa razy, gdy wywołanie serwletu jest w łańcuchu i po raz drugi nie jest.doFilter wywołana dwukrotnie, zamierzone zachowanie?
Dodałem kilka printlns w TimeOfDayFilter.java i MoodServlet.java, aby to pokazać.
TimeOfDayFilter.java:
...
System.out.println("TimeOfDay before"); //added
chain.doFilter(req, res);
System.out.println("TimeOfDay after"); //added
...
MoodServlet.java:
...
response.setContentType("text/html;charset=UTF-8");
System.out.println("MoodServlet"); //added
PrintWriter out = response.getWriter();
...
Wynik z serwera GlassFish (3.1) przy wywołaniu okna serwlet jest następujący:
INFO: mood was successfully deployed in 406 milliseconds.
INFO: TimeOfDay before
INFO: MoodServlet
INFO: TimeOfDay after
INFO: TimeOfDay before
INFO: TimeOfDay after
Czy to zamierzone zachowanie? Jeśli tak, jaki jest powód dodatkowego połączenia?
Wystarczy zrobić 'System.out.println (request.getRequestURI())', aby dowiedzieć się, które żądanie dokładnie trafiło w filtr.I naciśnij klawisz F12 w przeglądarce, aby śledzić wszystkie wysłane żądania HTTP. – BalusC