
목차
Java Servlet은 웹 페이지를 동적으로 생성하는 서버측 프로그램입니다. 자바를 기반으로 동작하며, 클라이언트의 요청에 따라 동적인 웹페이지를 생성하는 WAS(Web Application Server)의 주요 구성 요소 중 하나입니다.
Java Servlet 이란?
Servlet은 웹 서버 내에서 동작하는 Java 클래스입니다. 이 클래스는 HTTP 프로토콜을 통해 클라이언트의 요청을 받아 처리하고 결과를 클라이언트에게 반환합니다. 이 과정에서 정적인 페이지를 제공하는 웹 서버와 달리, 사용자의 입력에 따라 동적으로 웹 페이지를 생성하는 것이 가능합니다.
Servlet의 동작 원리
Servlet의 동작 원리를 이해하기 위해 우선 사용자의 요청에서 서블릿의 제거까지의 전체적인 흐름을 살펴봅시다.
1. 사용자 요청
먼저 사용자는 웹 브라우저를 통해 원하는 데이터를 요청합니다. 이 요청은 HTTP를 통해 이루어지며, 요청 받은 웹 서버는 이를 분석하여 정적인 페이지 요청인 경우 바로 처리하고, 동적인 페이지에 대한 요청인 경우 웹 컨테이너(서블릿 컨테이너)로 넘깁니다.
2. HttpServletRequest, HttpServletResponse 객체 생성
서블릿 컨테이너는 이어서 HttpServletRequest와 HttpServletResponse 객체를 생성합니다. HttpServletRequest 객체는 클라이언트의 요청 정보를 담고, HttpServletResponse 객체는 요청 처리 결과를 담습니다. 이 두 객체는 서블릿이 클라이언트와 통신하는데 필요한 모든 정보를 포함합니다.
3. web.xml 파싱
서블릿 컨테이너는 요청 정보를 바탕으로 web.xml, 즉 서블릿의 배포 서술자를 파싱합니다. web.xml 파일은 서블릿의 위치와 URL 매핑 정보 등을 담고 있어, 서블릿 컨테이너가 요청을 처리할 적절한 서블릿을 찾는데 도움을 줍니다.
4. 서블릿 초기화
이제 서블릿 컨테이너는 찾아낸 서블릿을 초기화합니다. 이 과정에서 서블릿 클래스가 로드되고 인스턴스가 생성되며, 이 인스턴스를 통해 서블릿의 init()
메서드가 호출됩니다. 서블릿 인스턴스는 싱글톤 패턴을 따르며, 따라서 서블릿의 생명 주기 동안 단 한 번만 생성됩니다.
5. service() 실행
초기화가 완료되면, 서블릿 컨테이너는 클라이언트의 요청을 처리하기 위해 서블릿의 service()
메서드를 호출합니다. 이 메서드는 doGet()
또는 doPost()
와 같은 메서드를 호출하여 실제로 클라이언트의 요청을 처리합니다.
6. destroy() 실행
마지막으로, 서블릿 컨테이너는 더 이상 서블릿이 필요하지 않다고 판단하면 destroy()
메서드를 호출하여 서블릿을 제거합니다. 이는 서버가 종료되거나 오랫동안 사용되지 않는 서블릿에 대해 일어납니다.
Servlet의 특징과 장점
Servlet은 상태 유지를 지원하며, 쓰레드 방식으로 동작하기 때문에 효율적인 자원 사용이 가능합니다. 또한, 서블릿은 서버 측에서 동작하기 때문에 보안성이 높습니다.
Java Servlet은 웹 서버의 확장성을 향상시키는 데 중요한 역할을 합니다. 또한, 동적인 웹 페이지 생성과 데이터 처리를 위한 강력한 도구입니다. 이러한 이해를 바탕으로, 자바 기반의 웹 애플리케이션 개발에 있어서 중요한 역할을 합니다.