본문 바로가기

프로그래밍/Servlet&JSP

컨테이너(예 : 톰캣)의 역할

1. 웹서버와의 통신
컨테이너는 웹서버와의 통신 API를 지원한다. 개발자가 직접 웹서버와의 데이터 교환을 신경 안써도 된다.

2. 서블릿의 생명주기 관리
서블릿 클래스를 알아서 생성, 초기화, 요청에 대한 실행, 종료를 시킨다.

3. 멀티스레딩 지원
요청이 들어오면 자바 스레드로 서블릿을 실행.

4. 선언적인(xml) 보안 관리
자바 코드가 아닌 XML 배포 서술자에 기록해서 보안관리를 간편하게 가능. (컴파일을 하지 않아도 됨)

 

   ※ 배포서술자(DD, Deployment Descriptor)란? 
      웹 애플리케이션의 구동에 대한 환경설정을 기술하는 XML로 된 파일이다.  
      예를 들어, 서블릿 배포를 위해 URL과 서블릿 파일을 매핑하고, 보안설정, 에러페이지 설정을 한다.

 

5. JSP 지원

JSP 파일을 읽어서 서블릿(자바 코드)으로 변환.

 

 

※ 요청이 들어왔을 때 처리 순서

 

1. 요청에 대한 HttpServletRequest, HttpServletResponse 두 객체 생성.
2. 요청 URL에 대한 서블릿을 찾고, 서블릿의 스레드 생성하여 request, response 전달.
3. 서블릿의 service() 메서드 실행. HTTP Method에 따라 doGet(), doPost() 메서드 실행.

- JSP를 사용하지 않을 때
4. 서블릿은 doGet이나 doPost 메서드에서 응답 본문을 response 객체에 적재하여 컨테이너로 전달.

- JSP를 사용할 때
4-1. 서블릿은 doGet이나 doPost 메서드에서 JSP에 필요한 데이터를 request에 적재한다.
4-2. JSP파일로 요청을 전달(forward)한다. 
4-3. JSP파일은 request에 적재된 data를 사용해 페이지를 생성하고 response 객체에 적재하여 컨테이너로 전달.

5. 전달받은 response객체의 정보를 토대로 HTTP response 전환 후 클라이언트에 전달.

'프로그래밍 > Servlet&JSP' 카테고리의 다른 글

redirect & dispatch  (0) 2020.05.04
HttpServletRequest 객체의 port 조회 메서드 구분  (0) 2020.04.07
서블릿 라이프사이클  (0) 2020.04.05
CGI와 서블릿  (0) 2020.03.27