서블릿
이 포스트는 김영한님의 ‘스프링 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 스펙을 매우 편리하게 사용
동작 원리
- 웹 브라우저로부터
localhost:8080/user
라는 요청이 들어온다. - WAS에서
request
,response
객체를 생성한다. - 서블릿 컨테이너는 해당 객체들을 가지고 요청 URL에 해당하는 서블릿 코드를 실행한다.
- HTTP 응답을
response
객체에 작성하여 전달한다.
서블릿 컨테이너
- 서블릿을 지원하는 WAS
- ex) 톰캣
- 서블릿의 생성, 호출, 생명주기 관리
- 서블릿 객체는 싱글톤으로 관리
- 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용
- 모든 클라이언트 요청은 동일한 서블릿 객체 인스턴스에 접근
- 공유 변수 사용 주의
- 서블릿 컨테이너 종료 시 함께 종료
- JSP도 서블릿으로 변환되어서 사용
- 동시 요청을 위한 멀티 스레드 처리 지원
댓글남기기