본문 바로가기

Struts/Struts Programming

[Struts] 스트럿츠 2 아키텍처

반응형

스트럿츠 2 아키텍처



 -. 스트럿츠 2는 모든 요청을 필터인 FilterDispacher가 처리하게 된다.

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

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

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


01) 스트럿츠 2 필터 디스패처의 역할

 ※ 필터 기반으로 액션 요청을 처리하는 스트럿츠 2 프레임워크는 어떠한 처리를 할 것인지가

     웹 애플리케이션의 설정파일인 web.xml에 의해 결정된다.


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

    필터에서 어떠한 처리가 될 것인지가 결정된다.

 -. 필터 디스패처는 요청에 대한 진입점이다.


02) 설정 관리자 / 액션 매퍼

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

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


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

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

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

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


03) 액션 프록시 / 액션 인보케이션 / 액션 컨텍스트

 ※ 액션 프로시는 액션 실행을 위해 제공되는 대행자이다. 액션 프록시는 액션 프록시 팩토리 인스턴스를 사용하여

    필터 디스패처에 의해 생성되고, struts.xml 파일을 사용하여 초기화되는 설정 관리자(Configura-tionManager)를 참조한다.


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

    더 이상 호출할 인터셉터가 없다면 액션 인스턴스가 실행된다.

 ② 액션 프록시는 액션 인보케이션의 invoke( ) 메소드를 호출한다. 액션 인보케이션은 인터셉터의 intercept( ) 메소드를 호출한다.

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

    이와 같은 방식으로 마지막 인터셉터까지 이 과정을 반복한다. 액션 인보케이션이 더 이상 호출할 인터셉터가 없으면 액션을 실행한 다음

    리절트를 실행한다.

 ③ 액션이 반환될 때에 struts.xml에 매핑되어 있는 액션 리절트 코드 값에 해당되는 리절트를 찾는 역할을 한다. 해당 리절트가 실행된 후에는

    인터셉터들이 역순으로 반환도니다. 요청을 처리하기 위해 사용되는 모든 컨텍스트 정볼르 비록하여, 요청이 처리된 후 발생하는

    결과도 포함된다.

 ④ 액션 컨텍스트는 액션 프록시가 실행된느 동안 생성되어 스레드 로컬에 저장된느 쓰레드 로컬 오브젝트이다.

    액션 컨텍스트는 현재 실행 환경에 대한 다양한 정보를 포함한다.


반응형