Lesson 16 / 38

Servlets & HTTP

Understand the servlet lifecycle inside a container like Tomcat, why one shared instance serves many request threads, and how doGet / doPost handle HTTP.

Lifecycle

A servlet container (Tomcat, Jetty) creates one servlet instance and calls init() once, then service() — dispatching to doGet, doPost etc. — concurrently on many request threads, then destroy() at shutdown. Because instances are shared, keep no per-request mutable state in fields.

A minimal servlet

Read from HttpServletRequest, write to HttpServletResponse. Sessions, filters, and listeners are layered on top.

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
            throws IOException {
        res.setContentType("text/plain");
        res.getWriter().write("Hi " + req.getParameter("name"));
    }
}