사용자(브라우저)가 “로그인해줘!”라고 부탁하면, 서블릿이 그 요청을 받아 DB를 확인하고 결과 페이지(응답)를 만들어 돌려주는 자바 클래스입니다.
[로딩] → init() → (요청 n번) service() → ... → destroy() → [언로드]
// jakarta.servlet-api를 사용하는 최신 톰캣 기준 예시
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html><head><meta charset='UTF-8'><title>Hello</title></head>");
out.println("<body><h1>안녕하세요, Servlet!</h1>");
out.println("<p>요청 URI: " + req.getRequestURI() + "</p>");
out.println("</body></html>");
}
}
Tip: 구형 프로젝트는 web.xml 매핑을 쓰지만, 요즘은 @WebServlet("/path") 어노테이션 매핑이 간편합니다.
Q1. 서블릿은 왜 필요한가요?
A. HTTP 요청을 자바로 처리해 동적 페이지를 만드는 표준 컨트롤러이기 때문입니다.
Q2. JSP랑 뭐가 달라요?
A. JSP는 화면 템플릿, 서블릿은 로직/흐름 제어. JSP도 결국 서블릿으로 변환돼 실행됩니다.
Q3. 스프링 MVC랑 관계는?
A. 스프링 MVC도 내부적으로 서블릿(DispatcherServlet)을 사용합니다. 서블릿 개념을 알면 스프링이 쉬워집니다.
| @Controller와 @RestController (0) | 2022.10.30 |
|---|---|
| @RequestBody, @ModelAttribute, @RequestParam (0) | 2022.10.30 |
| IoC, 스프링 컨테이너(Container), 스프링 빈(Bean)이란? (0) | 2022.10.29 |
| 의존관계 주입(Dependency Injection), 의존성 주입이란? (0) | 2022.10.29 |
| 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2022.10.27 |