새발블로그

서블릿 기초 본문

Server/Spring

서블릿 기초

EUG 2025. 6. 25. 17:24

1. 톰캣(Tomcat)이란?

톰캣이란?

  • Servlet/JSP를 실행해주는 WAS (Web Application Server)
  • Apache Software Foundation에서 제공하는 Java 기반 오픈소스 WAS
  • HTTP 요청을 받아 Java Servlet을 통해 동적 웹 페이지 생성
  • (정적 자원도 처리 가능하지만 주로 동적 처리용으로 사용)

톰캣의 역할 예시

사용자가 웹 브라우저에서 http://localhost:8080/demo/hello-servlet 요청 시,

  1. 톰캣이 요청을 수신
  2. /demo 웹 어플리케이션을 찾음
  3. /hello-servlet이라는 URL 매핑을 가진 서블릿(@WebServlet) 실행
  4. 서블릿이 응답 생성 후 반환 → 브라우저에 표시됨

2. 서블릿(Servlet) 개념

정의

  • 자바 기반의 서버 측 웹 애플리케이션 컴포넌트
  • HTTP 요청을 처리하고, HTML 등을 응답으로 보내는 클래스
  • javax.servlet.http.HttpServlet을 상속하여 생성

특징

  • main 메서드가 없고, 웹 컨테이너(톰캣)가 실행 및 관리
  • 애노테이션 @WebServlet("/hello-servlet")으로 URL 매핑

3. 서블릿 라이프사이클

단계 메서드 설명
초기화 init() 서블릿 생성 시 1회 호출, 초기 설정 처리
서비스 service() 클라이언트 요청마다 호출, doGet, doPost 등으로 분기
종료 destroy() 서블릿 제거 시 호출, 리소스 해제 등 정리 작업 수행

4. JSP (JavaServer Pages) 개념

정의

  • HTML 내에 Java 코드를 포함할 수 있는 서버 사이드 스크립트
  • 최초 요청 시 서블릿으로 변환되어 실행
  • 복잡한 비즈니스 로직보단 화면(View) 출력용으로 주로 사용

JSP와 Servlet의 차이

항목 JSP Servlet
목적 View(출력용) Controller(로직 처리)
형식 HTML + Java Java 코드 중심
작성 난이도 쉬움 상대적으로 어려움

5. Nginx 개념

정의

  • 가볍고 빠른 오픈소스 웹 서버
  • 정적 파일 제공이나 Reverse Proxy(리버스 프록시) 역할로 많이 사용

Nginx의 활용

  • 정적 리소스 처리 (이미지, HTML, CSS 등)
  • WAS(톰캣 등) 앞단에 배치하여 부하 분산(Load Balancing)보안 강화
  • 클라이언트 → Nginx → (필요 시) Tomcat

6. Application Server / App Server

정의

  • 동적 웹 콘텐츠를 처리하는 서버 (Servlet/JSP 실행)
  • 대표적인 AppServer: Tomcat, JBoss, WebLogic, WebSphere

Web Server와의 차이

 

항목 Web Server App Server (WAS)
처리 범위 정적 콘텐츠 (HTML, 이미지 등) 동적 콘텐츠 (Servlet, JSP 등)
예시 Nginx, Apache HTTPD Tomcat, JBoss, WebLogic

7. Servlet 관련 요청/응답 API

요청(Request)

request.getParameter("a");           // 단일 파라미터 얻기
request.getParameterValues("c");     // 다중 파라미터 (checkbox 등)
request.setCharacterEncoding("UTF-8"); // POST 요청의 바디 인코딩 설정
request.getInputStream();            // 바디 직접 읽기 (파일 업로드 등)

응답(Response)

response.setContentType("text/html;charset=utf-8"); // 응답 타입과 인코딩 설정
PrintWriter out = response.getWriter();              // 응답 출력 스트림 얻기

기타 용어 정리

웹 기술 구조 정리

클라이언트 측(Client-Side Script)

  • 브라우저 내에서 실행
  • 렌더링 엔진: HTML, CSS 처리
  • JS 엔진: JavaScript 실행

서버 측(Server-Side Script)

  • 서버에서 실행되는 스크립트
  • 처리 언어: PHP, ASP, JSP, Servlet 등
  • 각각 서버에 맞는 엔진/모듈 필요
    • PHP → PHP 엔진
    • JSP → JSP 엔진 (톰캣 포함)
    • ASP → ASP용 DLL
용어 설명
웹 컨텍스트(Web Context) 하나의 웹 어플리케이션 (예: /demo)
웹 모듈(Web Module) 웹 프로젝트 단위 (예: demo2)
컨텍스트 패스 웹앱의 기본 경로 (예: /demo)

 

요청 URL 예시:

<http://localhost:8080/demo/hello-servlet>

→ /demo 웹앱의 /hello-servlet 서블릿을 찾음

'Server > Spring' 카테고리의 다른 글

쿠키(Cookie) / 세션(Session) / 로컬스토리지(LocalStorage)  (1) 2025.06.25
EL, JSTL  (0) 2025.06.25
JSP 이해  (1) 2025.06.25
SLF4J와 Logback  (0) 2025.06.25
빌드 및 Gradle, JUnit 테스트  (0) 2025.06.25