웹 애플리케이션은 웹 브라우저를 통해 사용자와 상호작용하는 소프트웨어 애플리케이션입니다. 보통 클라이언트-서버 모델을 따르며, 클라이언트(웹 브라우저)가 서버에 요청을 보내면 서버는 그에 대한 응답을 생성해 반환합니다.
Servlet은 Java 기반의 웹 애플리케이션에서 클라이언트 요청을 처리하고 동적 웹 콘텐츠를 생성하는 핵심 기술입니다. 웹 서버에서 실행되는 자바 클래스 형태로 구현되며, 클라이언트가 보낸 HTTP 요청을 받아 필요한 작업을 수행한 후 HTML이나 JSON 같은 응답을 생성합니다.
Servlet을 작성하는 방법에는 여러 가지가 있지만, 일반적으로 Java EE에서 @WebServlet 어노테이션을 사용해 정의합니다. Spring에서는 Servlet을 직접 사용하는 대신 Spring MVC 컨트롤러가 서블릿 역할을 대신합니다. 다만, 특별한 경우에는 @WebServlet을 사용해 직접 Servlet을 추가할 수 있습니다.
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@Component
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, Spring Servlet!</h1>");
out.println("</body></html>");
}
}
이 Servlet은 /hello 경로로 매핑되어 GET 요청이 들어오면 “Hello, Spring Servlet!”이라는 HTML 응답을 반환합니다.
Spring Boot에서는 내장된 Tomcat 서버를 사용해 별도의 서버 설정 없이도 이 Servlet을 자동으로 배포 및 실행할 수 있습니다. 이와 더불어, Spring에서는 @Controller 어노테이션을 사용한 컨트롤러로 대부분의 웹 요청을 처리하지만, 특정 목적을 위해 직접 Servlet을 작성할 수도 있습니다.
Servlet의 생명주기(Lifecycle)는 크게 세 가지 단계로 나뉩니다
init 메서드가 호출됩니다.service 메서드가 호출되며, 이 메서드는 내부적으로 doGet, doPost 등 HTTP 메서드에 맞는 메서드를 호출합니다.destroy 메서드가 호출됩니다.Servlet 개발 시 이 라이프사이클을 이해하고 적절한 시점에 필요한 로직을 구현해야 합니다.