Servlet的工作原理:创建、会话、共享变量与多线程
```html
大家好!我刚开始学习Java EE和Сервлеты,脑子里一团浆糊。我写了一个简单的Сервлет用来统计页面访问次数,但它表现得很奇怪。这是我的代码:
```java
@WebServlet("/counter")
public class CounterServlet extends HttpServlet {
private int counter = 0; // 实例变量
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
counter++;
resp.getWriter().println("Visits: " + counter);
}
}
```
当我在浏览器的两个不同标签页中打开页面时,计数器莫名其妙地一次增加了2甚至更多。我原以为每个用户都会创建自己的Сервлет实例,但看起来并非如此。
另外我不明白:
1. Сервлет究竟何时创建?是在启动时一次创建,还是每次请求都创建?
2. 会话(Session)是如何工作的?我想为每个用户单独统计访问次数。
3. 如果Сервлет是
```