서블릿도 IoC가 적용되서 프로그램의 실행 흐름을 개발자가 제어하지 않는다. 따라서 서블릿이 어떤 순서로 실행되는지 알아야 한다.
서블릿 생명주기(Life Cycle) ;서블릿 실행순서
- 클라이언트는 서버로 서비스 요청
- 서버는 URI를 분석해서 클라이언트가 요청한 서비스가 서블릿이라면
- 요청처리를 서블릿 컨테이너에게 넘김
- 서블릿 컨테이너는 WEB-INF/classes or WEB-INF/lib에서 찾아 실행을 준비
- 서블릿 컨테이너는 최초 실행인지 아닌지를 체크
- 최초 실행 시
- 메모리에 로딩 → 객체 생성 → 서블릿 객체의 init()호출 → service() 호출
- 서버가 멈추기 전까지는 계속 살아있는 객체가 된다 , 다음에 다시 이 서블릿을 요청시 바로 service() 가 호출
- service() 동작이 모두 끝나면 요청결과를 컨테이너에게 전달함
서블릿의 실행
WEB-INF 안에는 웹 애플리케이션 설정과 관련된 내용인 web.xml 과 그 외 웹 애플리케이션과 관련된 중요한 파일이 들어있는 디렉토리이므로 외부에서 접근할 수 없다
서블릿은 WEB-INF 안에 위치하기 때문에 클라이언트 WEB-INF 로 접근해야 하고 WEB-INF 안에는 중요한 파일이 들어있으므로 직접 접근할 수 없다 이 모순된 상황을 어떻게 해결할까?
접근 설정
- web.xml 직접설정
- Annotation 사용한 설정
web.xml 을 이용한 설정
- web-app 태그 안에 적는다
- <servlet> 태그로 서블릿을 서버가 인식할 수 있게 등록한다
- <servlet-mapping> 태그로 클라이언트가 서블릿에 접근할 수 있도록 설정한다
Annotation을 이용한 설정
- @WebServlet(”경로”) 사용하여 서블릿의 경로를 설정할 수 있다.
- WebServlet에는 여러가지 속성들이 존재함
Share article