카테고리 없음
서블릿(Servlet)이란?
신정훈
2025. 3. 11. 16:49
서블릿(Servlet)이란?
서블릿(Servlet)은 Java EE(Enterprise Edition) 환경에서 웹 애플리케이션을 개발할 때 사용되는 서버 측 기술입니다. 클라이언트의 요청을 처리하고 동적인 웹 페이지를 생성하는 역할을 하며, Java로 작성된 클래스입니다.
서블릿의 특징
- 플랫폼 독립성: Java로 개발되므로 다양한 운영체제에서 실행할 수 있습니다.
- HTTP 요청 및 응답 처리: GET, POST 등의 요청을 처리하여 웹 페이지를 동적으로 생성할 수 있습니다.
- 멀티스레드 지원: 하나의 서블릿 인스턴스가 여러 클라이언트의 요청을 동시에 처리할 수 있습니다.
- JSP와의 연동 가능: 서블릿은 JSP(Java Server Pages)와 함께 사용하여 MVC(Model-View-Controller) 패턴을 구현할 수 있습니다.
서블릿의 동작 방식
- 클라이언트 요청: 사용자가 웹 브라우저를 통해 특정 URL을 요청합니다.
- 서블릿 컨테이너가 요청 처리: 요청이 들어오면 서블릿 컨테이너(Tomcat 등)가 해당 요청을 적절한 서블릿으로 전달합니다.
- 서블릿 실행: 서블릿의 service() 메서드가 호출되며, HTTP 요청 방식에 따라 doGet() 또는 doPost() 메서드가 실행됩니다.
- 응답 반환: 서블릿은 클라이언트에게 HTML, JSON 등의 데이터를 응답으로 보냅니다.
서블릿 구현 예제
아래는 간단한 서블릿을 구현하는 예제 코드입니다.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, Servlet!</h1>");
out.println("</body></html>");
}
}
코드 설명
- @WebServlet("/hello"): 해당 서블릿이 /hello 경로에서 동작하도록 설정합니다.
- doGet() 메서드: GET 요청이 들어오면 HTML 응답을 반환합니다.
- PrintWriter: HTTP 응답을 클라이언트에게 출력하는 역할을 합니다.
서블릿의 라이프사이클
- 서블릿 로드 및 인스턴스 생성: 최초 요청 시 서블릿이 메모리에 로드되고 인스턴스가 생성됩니다.
- 초기화 (init() 메서드 호출): 서블릿이 초기화되며, 한 번만 실행됩니다.
- 요청 처리 (service() 메서드 호출): 클라이언트 요청이 있을 때마다 실행됩니다.
- 소멸 (destroy() 메서드 호출): 컨테이너가 서블릿을 제거할 때 한 번 실행됩니다.
서블릿과 JSP 비교
항목서블릿JSP
코드 구성 | Java 코드 중심 | HTML 코드 중심 |
가독성 | 비교적 어려움 | 쉬움 |
유지보수 | 어렵다 | 비교적 쉽다 |
성능 | 빠름 | 서블릿으로 변환되므로 약간 느릴 수 있음 |
마무리
서블릿은 Java 웹 애플리케이션 개발의 기초가 되는 중요한 기술입니다. JSP와 연동하여 동적인 웹 페이지를 구현할 수 있으며, Spring과 같은 프레임워크의 기반이 되기도 합니다. 실무에서는 직접 서블릿을 구현하기보다는 Spring MVC 같은 프레임워크를 사용하는 경우가 많지만, 서블릿의 동작 원리를 이해하면 더욱 효과적으로 웹 애플리케이션을 개발할 수 있습니다.