Java servlet中的静态变量

Java servlet中的静态变量,java,servlets,web-applications,Java,Servlets,Web Applications,我对servlet非常陌生。我无法从下面的代码中找出行为 public class HelloServlet extends HttpServlet { static int counter = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException { if (counter == 0) { httpServl

我对
servlet非常陌生。我无法从下面的代码中找出行为

public class HelloServlet extends HttpServlet {

  static int counter = 0;

  public void doGet(HttpServletRequest req, HttpServletResponse res)
          throws IOException {
      if (counter == 0) {
          httpServletResponse.getWriter().print("Counter = " + counter);
          counter++;
      } else {
          httpServletResponse.getWriter().print("Counter = " + counter);
      }
   }
}

当我部署并运行它时,结果是浏览器中的“Counter=1”。为什么它跳过“Counter=0”并直接打印“Counter=1”?

可能是您的浏览器预先获取了它。如果有日志,它应该显示servlet实际被访问的次数。我不能告诉你,只是你的开发环境中有一些奇怪的东西。然而,在servlet中,静态原语通常是一个糟糕的想法。为此使用AtomicInteger<代码>静态最终计数器=新的AtomicInteger()@realpoint所以当容器预取时,它会运行servlet,但会丢弃输出?您使用的是哪台web服务器?web浏览器可能会发送一个HEAD请求(计数器=1),然后发送一个GET请求。