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请求。