이 포스트는 김영한님의 ‘스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술’을 수강하고 작성하였습니다.

WAS에서 처리해야 하는 업무

  • 서버 TCP/IP 연결 대기
  • HTTP 요청 메시지를 파싱해서 읽기
  • HTTP 메서드, 요청 URL 인지
  • Content-Type 확인
  • HTTP 메시지 바디 파싱
  • 저장 프로세스 실행
  • 비즈니스 로직 실행
  • HTTP 응답 메시지 생성
    • HTTP 시작 라인 생성
    • Header 생성
    • 메시지 바디에 HTML 생성해서 입력
  • TCP/IP에 응답 전달, 소켓 종료

서블릿을 지원하는 WAS 사용 시

‘비즈니스 로직 실행’을 제외한 나머지 부분을 서블릿으로 처리

서블릿

  • urlPatterns로 지정한 URL이 호출되면 서블릿 코드가 실행
  • HttpServletRequest: HTTP 요청 정보
  • HttpServletResponse: HTTP 응답 정보
  • HTTP 스펙을 매우 편리하게 사용

동작 원리

웹 브라우저WASRequestResponselocalhost:8080/user응답서블릿 컨테이너userServlet실행종료출처: 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (김영한)
  • 웹 브라우저로부터 localhost:8080/user라는 요청이 들어온다.
  • WAS에서 request, response 객체를 생성한다.
  • 서블릿 컨테이너는 해당 객체들을 가지고 요청 URL에 해당하는 서블릿 코드를 실행한다.
  • HTTP 응답을 response 객체에 작성하여 전달한다.

서블릿 컨테이너

  • 서블릿을 지원하는 WAS
    • ex) 톰캣
  • 서블릿의 생성, 호출, 생명주기 관리
  • 서블릿 객체는 싱글톤으로 관리
    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
    • 모든 클라이언트 요청은 동일한 서블릿 객체 인스턴스에 접근
    • 공유 변수 사용 주의
    • 서블릿 컨테이너 종료 시 함께 종료
  • JSP도 서블릿으로 변환되어서 사용
  • 동시 요청을 위한 멀티 스레드 처리 지원

댓글남기기