Avatar ·

How servlets work: creation, sessions, shared variables and multithreading

Hello everyone! I've just started learning Java EE and servlets, and I'm completely confused. I wrote a simple servlet to count page visits, but it behaves strangely. Here's my code: ```java @WebServlet("/counter") public class CounterServlet extends HttpServlet { private int counter = 0; // instance variable @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { counter++; resp.getWriter().println("Visits: " + counter); } } ``` When I open the page in two different browser tabs, the counter somehow increases by 2 or even more. I thought a separate servlet instance was created for each user, but apparently that's not the case.