- 스트럿츠2 프레임워크의 아키텍쳐를 묘사한것 ( 참고서적 : 스트럿츠2 프로그래밍 입문 )


- 간단한 설명

  스트럿츠 2는 모든 요청을 필터인 FilterDispatcher 가 처리한다. ( 스트럿츠2 web.xml 설정을 보면 알수있다. )

  FilterDispatcher 은 요청이 들어오면 ActionProxy 인스턴스가 생성되고 액션 실행을 위임한다.

  ActionProxy 는 인터셉터와 리절트 등 액션 실행 구성을 읽어서 Action Invocation을 초기화 하고 실행한다.

  Action Invocation 은 실질적인 '인터셉터' 와 '액션 리절트' 의 실행을 담당한다.




- 각 항목(아키텍처) 별 기능 및 역할

  1. 스트럿츠 2 필터 디스패쳐(Filter Dispatcher) 의 역할

     - 웹 어플리케이션 단위로 설정되는 컨텍스트마다 애플리케이션 에 대한 모든 요청이 스츠럿츠2 서블릿 필터로 전달되며,

        필터에서 어떠한 처리가 될 것인지가 결정된다. (즉, 필터 디스패쳐는 요청에 대한 진입점)

        ※ 스트럿츠 2 프레임 워크는 어떠한 처리를 할 것인지가 웹 어플리케이션 Web.xml 에 의해 결정된다.

  

  2. 설정 관리자 / 액션 매퍼

     - 사용자 요청이 들어올 때, 어떠한 액션이 URL로 매핑될 것인지에 대한 결정을 하기 위해 설정 관리자(ConfigurationManager) 

        와 액션 매퍼(ActionMapper)를 사용한다.

        설정관리자(ConfigurationManager)는 struts.xml 파일을 사용하여 초기화 된다.

        필터 디스패쳐는 액션 요청 처리를 위해 액션 매펴의 도움을 받아서 보내진 요청이 스트럿츠2 액션을 위한 요청인지의 여부를

        판단한다. 액션 매퍼를 통해 액션 요청으로 판단되면 액션 프록시(ActionProxy)에게 제어를 위임한다. 

        만약, 요청된 이름과 일치되는 액션이 발견되지 않으면 오류를 반환한다.


  3. 액션 프록시 / 액션 인보케이션 / 액션 컨텍스트 

     - 액션 프록시는 액션 실행을 위해 제공되는 대행자이다.액션 프록시 팩토리 인스턴스를 사용하여 필터디스패쳐에 의해 생성되고

        struts.xml 파일을 사용하여 초기화되는 설정 관리자(ConfigurationManager) 를 참조한다.

        액션 프록시는 액션 인보케이션을 생성하고, 액션 인보케이션은 액션 실행에 앞서 인터셉터를 찾아서 호출한다.

        더 이상 호출할 인터셉터가 없다면 액션 인스턴스가 실행된다. 이에 대한 동작은 다시 설명하겠다.

        글로 길게 써봐야 나중에 보지도 않을 뿐더러, 손만 아프니 내가 보기 편하게 쉽게 설명할 것이야 !!!


        ① web.xml 에  스트럿츠 필터 클래스(org.apache.struts2.dispatcher.FilterDispatcher)등록 & 필터 맵핑 등록

        ② 등록 후 어플레케이션 내의 모든 요청은 FilterDispatcher 가 처리한다.

        ③ FilterDispatcher 는 요청이 들어오면 ActionProxy 인스턴스 생성하고 액션 실행을 위임한다.

        ④ ActionProxy 는 다시 ActionInvocation 생성하고, inoke() 메서드 호출한다.

        ⑤ ActionInvocatino 은 인터셉터 스택 중 실행할 다음 인터셉터 확인 후 존재시 인터셉터의 intercept() 메서드 호출(전처리)

        ⑥ 인터셉터의 intercept() 메서드는 파라미터로 넘어온 액션 인보케이션의 invoke() 메서드를 다시 호출하여 체인을 형성

        ⑦ 이와 같은 방법으로 순차적으로 마지막 인터셉터까지 반복한다. 끝나면 액션을 실행 후 Result 를 실행

        ⑧ Result 실행 후 인터셉터들이 역순으로 반환된다.(후처리)


        

  

+ Recent posts