Avatar ·

Como funcionam os servlets: criação, sessões, variáveis compartilhadas e multithreading

Olá a todos! Comecei a aprender sobre Java EE e servlets, e estou completamente confuso. Escrevi um servlet simples para contar visitas à página, mas ele se comporta de forma estranha. Aqui está meu código: ```java @WebServlet("/counter") public class CounterServlet extends HttpServlet { private int counter = 0; // variável de instância @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { counter++; resp.getWriter().println("Visits: " + counter); } } ``` Quando abro a página em duas abas diferentes do navegador, o contador aumenta em 2 ou até mais de uma vez. Eu pensei que para cada usuário era criada uma instância própria do servlet, mas parece que não é o caso. Também não entendo: 1. Quando exatamente o servlet é criado? Uma vez na inicialização ou a cada requisição? 2. Como funcionam as sessões? Quero contar as visitas para cada usuário separadamente. 3. Se o servlet é