![서블릿 실행, 접근(feat : inblog)](https://inblog.ai/_next/image?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%25EC%2584%259C%25EB%25B8%2594%25EB%25A6%25BF%2520%25EC%258B%25A4%25ED%2596%2589%252C%2520%25EC%25A0%2591%25EA%25B7%25BC(feat%2520%253A%2520inblog)%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3D%25EB%25B0%25B1%25EC%2597%2594%25EB%2593%259C%25EB%25B8%2594%25EB%25A1%259C%25EA%25B7%25B8-dohyeong&w=1920&q=75)
서블릿도 IoC가 적용되서 프로그램의 실행 흐름을 개발자가 제어하지 않는다. 따라서 서블릿이 어떤 순서로 실행되는지 알아야 한다.
서블릿 생명주기(Life Cycle) ;서블릿 실행순서
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F693d5b26-7485-44bf-91d7-d3784dc47763%252FUntitled.png%3Ftable%3Dblock%26id%3D2d564f12-bcf8-4bf9-9ecb-5690fee9d9ef%26cache%3Dv2&w=3840&q=75)
- 클라이언트는 서버로 서비스 요청
- 서버는 URI를 분석해서 클라이언트가 요청한 서비스가 서블릿이라면
- 요청처리를 서블릿 컨테이너에게 넘김
- 서블릿 컨테이너는 WEB-INF/classes or WEB-INF/lib에서 찾아 실행을 준비
- 서블릿 컨테이너는 최초 실행인지 아닌지를 체크
- 최초 실행 시
- 메모리에 로딩 → 객체 생성 → 서블릿 객체의 init()호출 → service() 호출
- 서버가 멈추기 전까지는 계속 살아있는 객체가 된다 , 다음에 다시 이 서블릿을 요청시 바로 service() 가 호출
- service() 동작이 모두 끝나면 요청결과를 컨테이너에게 전달함
서블릿의 실행
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Ffd0923f5-0568-4574-ac4b-4e9265f30fc1%252FUntitled.png%3Ftable%3Dblock%26id%3Debdf68be-aec1-457c-9251-97b89bf3c9ca%26cache%3Dv2&w=3840&q=75)
WEB-INF 안에는 웹 애플리케이션 설정과 관련된 내용인 web.xml 과 그 외 웹 애플리케이션과 관련된 중요한 파일이 들어있는 디렉토리이므로 외부에서 접근할 수 없다
서블릿은 WEB-INF 안에 위치하기 때문에 클라이언트 WEB-INF 로 접근해야 하고 WEB-INF 안에는 중요한 파일이 들어있으므로 직접 접근할 수 없다 이 모순된 상황을 어떻게 해결할까?
접근 설정
- web.xml 직접설정
- Annotation 사용한 설정
web.xml 을 이용한 설정
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fb7485984-fb3d-42c3-a80b-aa4d7e13a913%252FUntitled.png%3Ftable%3Dblock%26id%3D094127e7-b022-4a4c-ac4e-639ae265a55b%26cache%3Dv2&w=3840&q=75)
- web-app 태그 안에 적는다
- <servlet> 태그로 서블릿을 서버가 인식할 수 있게 등록한다
- <servlet-mapping> 태그로 클라이언트가 서블릿에 접근할 수 있도록 설정한다
Annotation을 이용한 설정
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F24812eea-6915-4af3-b358-f984bcf6fee5%252FUntitled.png%3Ftable%3Dblock%26id%3D997c674b-d3b8-4750-989a-0396cd48298b%26cache%3Dv2&w=3840&q=75)
- @WebServlet(”경로”) 사용하여 서블릿의 경로를 설정할 수 있다.
- WebServlet에는 여러가지 속성들이 존재함
Share article