서블릿(Servlet)은 Java 기반의 웹 애플리케이션에서 클라이언트의 요청을 처리하고, 필요한 데이터를 처리한 후 클라이언트에게 응답을 보내기 위해 사용되는 서버 측 프로그램입니다. 서블릿은 Java EE 또는 Jakarta EE 플랫폼에서 지원하는 기술로, HTTP 프로토콜을 사용하여 웹 서버와 클라이언트 간의 통신을 관리합니다.
서블릿은 주로 컨트롤러의 역할을 수행하며, MVC 패턴에서 Model과 View 사이의 데이터 흐름을 제어합니다. JSP와 함께 사용되는 경우가 많으며, 다음과 같은 기능을 담당합니다.
서블릿의 동작 과정은 다음과 같은 단계로 이루어집니다.
서블릿 클래스는 javax.servlet.http.HttpServlet
클래스를 상속하여 만듭니다. 서블릿 클래스에서는 GET 요청을 처리하는 doGet()
메서드와 POST 요청을 처리하는 doPost()
메서드를 주로 구현합니다.
서블릿은 서블릿 컨테이너에 의해 생명 주기가 관리됩니다. 주요 생명 주기 메서드는 다음과 같습니다.
doGet()
메서드, POST 요청이면 doPost()
메서드가 호출됩니다.다음은 서블릿을 통해 간단한 Hello World 메시지를 출력하는 예제입니다.
import java.io.IOException;
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 {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 응답의 컨텐츠 타입과 인코딩 설정
response.setContentType("text/html;charset=UTF-8");
// HTML 형식으로 클라이언트에게 응답하기
response.getWriter().println("<html>");
response.getWriter().println("<head><title>Hello Servlet</title></head>");
response.getWriter().println("<body>");
response.getWriter().println("<h1>Hello, Servlet!</h1>");
response.getWriter().println("</body>");
response.getWriter().println("</html>");
}
}
HttpServlet
클래스를 상속하여 서블릿을 정의합니다./hello
로 요청이 오면 이 서블릿이 호출되도록 설정합니다.@WebServlet("/hello")
어노테이션으로 URL 매핑을 설정하여 /hello
경로로 요청이 들어올 때 HelloServlet
클래스가 호출되도록 합니다.http://localhost:8080/프로젝트이름/hello
로 접속하면 해당 서블릿이 실행됩니다.기능 | 서블릿 | JSP |
---|---|---|
역할 | 로직 처리 및 요청 제어 (Controller 역할) | 뷰(View) 역할로 사용자에게 출력할 페이지 |
문법 | Java 코드로 작성 | HTML 코드에 Java 코드를 삽입 |
사용 목적 | 비즈니스 로직과 요청 처리 | 화면 표시와 레이아웃 구성 |
유지보수성 | 로직 처리를 담당하여 유지보수가 용이 | 로직 처리가 어렵고 복잡한 JSP는 가독성이 떨어짐 |
init()
, service()
, destroy()
)와 HttpServletRequest 및 HttpServletResponse 객체를 통해 요청과 응답을 처리합니다.서블릿은 웹 애플리케이션에서 중요한 컨트롤러 역할을 수행하며, JSP와 결합하여 MVC 패턴을 구현할 때 강력한 구조를 제공합니다.