새발블로그
서블릿 기초 본문
1. 톰캣(Tomcat)이란?
톰캣이란?
- Servlet/JSP를 실행해주는 WAS (Web Application Server)
- Apache Software Foundation에서 제공하는 Java 기반 오픈소스 WAS
- HTTP 요청을 받아 Java Servlet을 통해 동적 웹 페이지 생성
- (정적 자원도 처리 가능하지만 주로 동적 처리용으로 사용)
톰캣의 역할 예시
사용자가 웹 브라우저에서 http://localhost:8080/demo/hello-servlet 요청 시,
- 톰캣이 요청을 수신
- /demo 웹 어플리케이션을 찾음
- /hello-servlet이라는 URL 매핑을 가진 서블릿(@WebServlet) 실행
- 서블릿이 응답 생성 후 반환 → 브라우저에 표시됨
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 |