티스토리 뷰

제어의 역전 (Inversion of Control)

  • 개발자가 객체를 생성하고, 메서드를 호출하던 JVM에서와는 다르게
  • WAS는 직접 객체를 생성하고 메서드를 호출한다. 이를 제어의 역전이라고 한다
  • 제어의 역전(Inversion of Control)은 프로그램의 제어 흐름 구조가 거꾸로 되는 것이다
  • 프로그램은 main() 에서 시작해 사용할 오브젝트를 결정하고 그 오브젝트를 만들어 메서드를 호출하는 일을 반복한다.
  • main() 이 어떤 객체를 생성하고, 메소드를 호출하는 등 개발자가 능동적으로 결정하고 만드는 구조이다
  • 반면, 제어의 역전은 기능만 구현해 놓으면 알아서 호출되어 사용되는 수동적인 구조를 갖는다
  • 객체의 생성부터 소멸까지 객체의 모든 생명주기를 개발자가 아닌 컨테이너(WAS)가 담당한다
  • 컨테이너(WAS)가 알아서 필요한 객체를 생성하기 위해서는 가이드 라인이 필요하다

 

web.xml

  • 웹 어플리케이션이 실행되면, 컨테이너(WAS)는 모든 서블릿의 객체를 미리 만들어둔다 (Ready on)
  • 그리고 클라이언트로부터 요청이 들어오면, 미리 만들어두었던 객체중에 요청에 해당하는 서블릿 객체를 호출해 사용한다
  • 서블릿마다 url이 매핑되어 있으며, 클라이언트의 동적 요청에는 서블릿의 url이 반드시 명시되어 있어야한다
  • 이는 클라이언트가 요청한 url을 확인해서 알맞은 서블릿 객체를 호출해 사용하기 때문이다
 💬 컨테이너(WAS)가 알아서 필요한 객체를 생성하기 위해서는 가이드 라인이 필요하다

 

  • 이 때의 객체는 서블릿의 객체를 의미한다
  • 웹 어플리케이션이 실행되면 컨테이너는 서블릿의 객체를 미리 만들어 두어야하는데
  • 어떻게 만들어야할 지에 대해 가이드 라인에 명시되어 있어야한다
  • 이 때의 객체 생성 가이드라인이 바로 web.xml 이다

 

  • Dynamic Web Project를 생성할 때, 설정하지 않으면 자동으로 web.xml이 생성되지 않는다
  • ProjectExplorer → 우클릭 → new → Dynamic Web Project → Next → Next
  • Generate web.xml deployment descriptor를 체크해주면 위와 같은 디렉토리에 web.xml 기본 파일이 생성된다

 

  • 만약 프로젝트 생성 시, 체크를 하지 않았다면
  • JavaEE Tools → Generate DEploymetn Descriptor Stub 를 통해 web.xml파일을 만들어줄 수 있다.
  • 이미 web.xml파일을 만들 수 있는 경우 해당 메뉴가 비활성화된다

 

 

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday