我正在通過Java EE servlet教程並嘗試使用mood example。我注意到doFilter被調用兩次,一旦servlet調用在鏈中,第二次調用不成功。doFilter調用兩次,有意的行爲?
我在TimeOfDayFilter.java和MoodServlet.java中添加了一些printlns來顯示它。
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();
...
從GlassFish服務器(3.1)調用Servlet時窗口的結果如下:
INFO: mood was successfully deployed in 406 milliseconds.
INFO: TimeOfDay before
INFO: MoodServlet
INFO: TimeOfDay after
INFO: TimeOfDay before
INFO: TimeOfDay after
這是預期的行爲?如果是這樣,那麼額外電話的原因是什麼?
只是做'System.out.println(request.getRequestURI())'來了解哪個請求準確地觸發了過濾器。然後,在webbrowser中按F12以跟蹤所有觸發的HTTP請求。 – BalusC