doFilter 调用了两次,预期的行为?
我正在学习Java EE servlet教程,并尝试了情绪示例。我注意到 doFilter 被调用了两次,一次 servlet 调用在链中,第二次不在。
我在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();
...
调用 servlet 时,玻璃鱼服务器 (3.1) 窗口的结果如下:
INFO: mood was successfully deployed in 406 milliseconds.
INFO: TimeOfDay before
INFO: MoodServlet
INFO: TimeOfDay after
INFO: TimeOfDay before
INFO: TimeOfDay after
这是预期的行为吗?如果是这样,额外呼叫的原因是什么?