[Day 22 | Servlet] Servlet

y♡ding·2024년 11월 12일
0

데브코스 TIL

목록 보기
144/163

서블릿(Servlet)은 Java 기반의 웹 애플리케이션에서 클라이언트의 요청을 처리하고, 필요한 데이터를 처리한 후 클라이언트에게 응답을 보내기 위해 사용되는 서버 측 프로그램입니다. 서블릿은 Java EE 또는 Jakarta EE 플랫폼에서 지원하는 기술로, HTTP 프로토콜을 사용하여 웹 서버와 클라이언트 간의 통신을 관리합니다.


서블릿의 역할과 동작 원리

서블릿은 주로 컨트롤러의 역할을 수행하며, MVC 패턴에서 Model과 View 사이의 데이터 흐름을 제어합니다. JSP와 함께 사용되는 경우가 많으며, 다음과 같은 기능을 담당합니다.

  1. 클라이언트 요청 처리: 브라우저나 애플리케이션에서 서버로 보낸 HTTP 요청을 받아 처리합니다.
  2. 비즈니스 로직 처리: 요청에 따라 필요한 데이터베이스 작업이나 계산 등의 비즈니스 로직을 수행합니다.
  3. 응답 생성 및 전송: 처리 결과를 기반으로 HTML, JSON, XML 등의 형식으로 응답을 생성하여 클라이언트에게 반환합니다.

서블릿의 동작 과정

서블릿의 동작 과정은 다음과 같은 단계로 이루어집니다.

  1. 클라이언트의 요청: 클라이언트(예: 웹 브라우저)에서 서버로 요청을 보냅니다. 예를 들어, "로그인" 버튼을 클릭하면 로그인 요청이 서버로 전달됩니다.
  2. 서블릿 컨테이너의 요청 전달: 웹 서버(Tomcat 등)는 요청을 서블릿 컨테이너로 전달합니다.
  3. 서블릿 호출 및 요청 처리: 서블릿 컨테이너는 해당 요청에 맞는 서블릿 객체를 생성하거나 기존 서블릿 객체를 호출하여 요청을 처리합니다.
  4. 응답 생성 및 반환: 서블릿이 HTML, JSON 등으로 응답을 생성하고, 서블릿 컨테이너는 생성된 응답을 클라이언트로 전송합니다.

서블릿의 특징

  1. 자바 기반 웹 애플리케이션 표준: 서블릿은 Java로 작성되어 Java EE 표준에 따라 웹 애플리케이션을 개발하는 데 사용됩니다.
  2. 멀티스레딩 지원: 서블릿은 하나의 객체가 여러 클라이언트 요청을 처리할 수 있도록 멀티스레딩 방식으로 동작하여, 고성능 처리가 가능합니다.
  3. 컨테이너에서 관리: 서블릿은 Tomcat과 같은 서블릿 컨테이너에서 실행되고 관리됩니다. 컨테이너는 서블릿 생명 주기를 관리하고, 요청과 응답을 처리합니다.

서블릿의 주요 구성 요소

1. 서블릿 클래스 생성

서블릿 클래스는 javax.servlet.http.HttpServlet 클래스를 상속하여 만듭니다. 서블릿 클래스에서는 GET 요청을 처리하는 doGet() 메서드와 POST 요청을 처리하는 doPost() 메서드를 주로 구현합니다.

2. 서블릿 생명 주기(Lifecycle)

서블릿은 서블릿 컨테이너에 의해 생명 주기가 관리됩니다. 주요 생명 주기 메서드는 다음과 같습니다.

  • init(): 서블릿이 처음 생성될 때 호출되며, 초기화 작업을 수행합니다.
  • service(): 클라이언트의 요청을 처리하는 메서드로, GET 요청이면 doGet() 메서드, POST 요청이면 doPost() 메서드가 호출됩니다.
  • destroy(): 서블릿이 종료될 때 호출되며, 자원을 해제하는 등의 정리 작업을 수행합니다.

3. 요청과 응답 객체

  • HttpServletRequest: 클라이언트로부터 전달된 요청 정보를 담고 있습니다. 요청 파라미터, 헤더 정보 등을 얻을 수 있습니다.
  • HttpServletResponse: 서버에서 클라이언트로 보낼 응답을 담고 있습니다. 응답 상태 코드 설정, 응답 데이터 전송 등의 작업을 수행합니다.

서블릿의 기본 예제

다음은 서블릿을 통해 간단한 Hello World 메시지를 출력하는 예제입니다.

1. HelloServlet.java (서블릿 클래스)

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 클래스를 상속하여 서블릿을 정의합니다.
  • @WebServlet 어노테이션: URL 매핑을 지정하여 /hello로 요청이 오면 이 서블릿이 호출되도록 설정합니다.
  • doGet() 메서드: 클라이언트의 GET 요청을 처리하며, HTML 형식의 응답을 생성하여 클라이언트에게 전송합니다.

2. URL 매핑

  • @WebServlet("/hello") 어노테이션으로 URL 매핑을 설정하여 /hello 경로로 요청이 들어올 때 HelloServlet 클래스가 호출되도록 합니다.
  • 웹 브라우저에서 http://localhost:8080/프로젝트이름/hello로 접속하면 해당 서블릿이 실행됩니다.

서블릿의 장점

  1. 안정성과 보안성: 자바 언어의 강력한 안정성과 보안성을 바탕으로 서버 측 애플리케이션을 구현할 수 있습니다.
  2. 확장성: 자바 기반의 다양한 라이브러리와 연동이 용이하여, 다양한 기능을 확장할 수 있습니다.
  3. 멀티스레딩 지원: 서블릿은 멀티스레드 환경에서 동시에 여러 요청을 처리할 수 있어 효율적인 웹 애플리케이션 개발이 가능합니다.

서블릿의 활용 예

  1. 로그인 처리: 클라이언트가 입력한 로그인 정보를 받아서 데이터베이스와 연동하여 사용자 인증을 수행합니다.
  2. 데이터베이스 CRUD 작업: 서블릿을 통해 데이터베이스와 연동하여 데이터 조회, 추가, 수정, 삭제와 같은 작업을 수행할 수 있습니다.
  3. API 엔드포인트: 서블릿을 사용하여 클라이언트에 JSON 형식의 데이터를 반환하여 API 엔드포인트로 활용할 수 있습니다.

JSP와 서블릿의 차이점

기능서블릿JSP
역할로직 처리 및 요청 제어 (Controller 역할)뷰(View) 역할로 사용자에게 출력할 페이지
문법Java 코드로 작성HTML 코드에 Java 코드를 삽입
사용 목적비즈니스 로직과 요청 처리화면 표시와 레이아웃 구성
유지보수성로직 처리를 담당하여 유지보수가 용이로직 처리가 어렵고 복잡한 JSP는 가독성이 떨어짐

요약

  • 서블릿은 Java 웹 애플리케이션에서 클라이언트 요청을 처리하고 응답을 생성하는 서버 측 프로그램입니다.
  • HTTP 요청을 받아 비즈니스 로직을 처리하며, JSP와 함께 사용하여 MVC 패턴을 구현하는 데 자주 사용됩니다.
  • 생명 주기 메서드(init(), service(), destroy())와 HttpServletRequestHttpServletResponse 객체를 통해 요청과 응답을 처리합니다.

서블릿은 웹 애플리케이션에서 중요한 컨트롤러 역할을 수행하며, JSP와 결합하여 MVC 패턴을 구현할 때 강력한 구조를 제공합니다.

0개의 댓글

관련 채용 정보