24.11.08 TIL Web Application, Servlet

신성훈·2024년 11월 8일

TIL

목록 보기
74/162

1. Web Application

웹 애플리케이션은 웹 브라우저를 통해 사용자와 상호작용하는 소프트웨어 애플리케이션입니다. 보통 클라이언트-서버 모델을 따르며, 클라이언트(웹 브라우저)가 서버에 요청을 보내면 서버는 그에 대한 응답을 생성해 반환합니다.

웹 애플리케이션의 주요 구성요소

  • 웹 브라우저: 사용자 인터페이스 제공
  • 웹 서버: 클라이언트의 요청 처리 및 응답 생성
  • 애플리케이션 서버: 비즈니스 로직 처리
  • 데이터베이스: 데이터 저장 및 관리

2. Servlet

Servlet은 Java 기반의 웹 애플리케이션에서 클라이언트 요청을 처리하고 동적 웹 콘텐츠를 생성하는 핵심 기술입니다. 웹 서버에서 실행되는 자바 클래스 형태로 구현되며, 클라이언트가 보낸 HTTP 요청을 받아 필요한 작업을 수행한 후 HTML이나 JSON 같은 응답을 생성합니다.

Servlet의 주요 특징

  • 플랫폼 독립적: 자바 기반이므로 다양한 운영체제에서 실행 가능
  • 확장성: 다양한 API와 라이브러리를 통해 기능 확장 가능
  • 보안성: 인증, 권한 관리 등 보안 기능 지원

Servlet은 웹 애플리케이션 개발 시 다음과 같은 역할

  • 클라이언트 요청 처리: 사용자의 요청을 받아 적절한 응답 생성
  • 비즈니스 로직 수행: 필요한 서비스 로직을 통해 데이터 처리
  • 데이터베이스 연동: DB에서 데이터를 조회하거나 저장
  • 동적 HTML 생성 및 응답 전송: HTML 콘텐츠 생성 후 브라우저에 반환

3. Servlet 작성 및 실행

Servlet을 작성하는 방법에는 여러 가지가 있지만, 일반적으로 Java EE에서 @WebServlet 어노테이션을 사용해 정의합니다. Spring에서는 Servlet을 직접 사용하는 대신 Spring MVC 컨트롤러가 서블릿 역할을 대신합니다. 다만, 특별한 경우에는 @WebServlet을 사용해 직접 Servlet을 추가할 수 있습니다.

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 라이프사이클

Servlet의 생명주기(Lifecycle)는 크게 세 가지 단계로 나뉩니다

  1. 초기화(init): 서블릿 객체가 처음 생성될 때 init 메서드가 호출됩니다.
  2. 서비스(service): 클라이언트 요청이 들어오면 service 메서드가 호출되며, 이 메서드는 내부적으로 doGet, doPost 등 HTTP 메서드에 맞는 메서드를 호출합니다.
  3. 소멸(destroy): 서버 종료나 필요에 따라 서블릿이 소멸될 때 destroy 메서드가 호출됩니다.

Servlet 개발 시 이 라이프사이클을 이해하고 적절한 시점에 필요한 로직을 구현해야 합니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글