2025-09-19

오늘 배운 것

Servlet

Front Controller Pattern

기존 서블릿 방식 문제

  • 요청마다 Servlet 생성 필요 → 중복/복잡성 증가
  • 공통 처리(로그, 예외, 응답 등) 코드가 각 Servlet에 흩어짐
  • 유지보수와 생산성 저하

Front Controller

  • 모든 요청을 단일 Servlet(Front Controller)이 처리
  • 장점
    • 단일 진입점 → 일관성 확보
    • 공통 기능 일괄 처리(인증, 권한, 로깅 등)
    • 구조 변경 최소화로 확장성↑
    • Servlet 개수 감소 → 코드 간결화

요청 구분 방법

  • URL 파라미터(?action=...)
  • 와일드카드 기반 URL 매핑 (.do, /app/*)

Filter

개념

  • Servlet 실행 전/후에 요청·응답을 가로채 기능 추가하는 웹 컴포넌트
  • 여러 개 연결되어 Filter Chain 형성

주요 용도

  • 인증/권한 확인 (로그인·권한 체크 후 redirect)
  • 로깅 (요청/응답 추적)
  • 보안 (XSS 방지: <&lt;, >&gt;)

작성 및 등록

  • HttpFilter 상속 구현
  • 매핑 방법
    • Servlet 대상 지정
    • URL 패턴 지정 (경로 기반/확장자 기반)
    • Dispatcher 옵션 (request, forward, include, error)
  • 등록 방법: @WebFilter 또는 web.xml

Listener

개념

  • 웹 애플리케이션에서 발생하는 이벤트 감지 객체
  • 예: 애플리케이션 생성/소멸, 세션 생성/종료 등

ServletContextListener

  • 애플리케이션 생명주기 모니터링
  • 공용 자원 초기화/정리 작업에 사용

등록

  • @WebListener 또는 web.xml

Servlet과 Multi-Thread

특징

  • Servlet은 하나의 객체만 생성 → 멀티스레딩 지원
  • 요청이 동시에 처리되므로 성능 우수
  • BUT, 공유자원 문제 발생

공유 자원 동기화

  • Mutex: 하나만 접근 (synchronized)
  • Semaphore: 여러 개 접근 가능 (ex. connection pool)

주의점

  • Servlet은 Thread-Safe하지 않음
  • 멤버 변수로 상태를 관리하면 데이터 손상 위험
  • 동기화(synchronized) 남용 시 성능 저하 → Servlet에 상태 저장 금지

results matching ""

    No results matching ""