Struts2 Framework 아키텍처
웹브라우저가 특정 리소스에 대한 요청을 보내면 스트러츠2 프레임워크의 Filter Dispatcher 모듈이 해당 리소스를 처리하기 위해 적절한 액션을 결정하게된다.
그 후에는 Interceptor 모듈들이 필요한 기능을 수행하게 되고 다음으로 Action클래스의 메소드들이 DB에서 데이터를 저장하거나 가져오는 등의 기능을 수행하게 된다.
그 다음에 결과값이 HTML, PDF, 이미지, 등등의 형태로 브라우저상에 표시가 된다.
Struts2 Framework 주요 Class, Interface
FilterDispatcher
-
요청에 대한 메인 엔트리 포인트 역할.
-
애플리케이션, 세션, 파라미터 및 각 스코프의 속성을 래핑하는 Map 구현체를 설정하여 ActionContext를 생성.
-
ActionMapper를 사용하여 액션의 요청인지 판별하여 액션의 호출 여부를 결정함.
-
만약, 액션의 요청인 경우 ActionProxy에게 위임.
-
요청된 이름과 일치하는 액션이 없을 경우 오류 내용으로 응답.
ActionProxy
-
액션을 수행하기 위해 제공되는 대행자 역할.
-
인터셉터, 리절트 등의 기술들을 캡슐화하기 위해 사용되어진다..
-
struts.xml 파일로 부터 초기화되는 Configuration Filesmanager 모듈을 사용.
-
ActionProxy는 커맨드 패턴을 구현하고 있는 ActionInvocation의 인스턴스를 생성 후 호출.
ActionInvocation
-
액션 인스턴스, 순서대로 적용될 인터셉터들, 리절트 맵등을 가짐.
-
액션 실행의 현재 상태를 나타냄
-
인터셉터의 흐름을 제어함.
-
하나 이상의 인터셉터가 있는 경우 모든 인터셉터들을 차례로 실행시키고 더 이상 호출할 인터셉터가 없는 경우 액션을 실행.
-
실행된 액션이 리턴한 리절트 정보를 이용해 리절트를 실행시킴.
-
호출되었던 인터셉터들을 역순으로 호출함.
Interceptor
-
액션의 호출을 동적으로 가로채는 역할.
-
개발자에게 액션 실행 전(전처리),후(후처리)에 다른 실행코드를 넣을 수 있는 수단을 제공함.
-
한 개 이상의 액션에 공통적으로 적용할 수 있는 기능들을 별도의 코드로 분리 작성함으로써 캡슐화, 재사용 가능하도록함.
Action
-
사용자의 요청을 처리하기 위한 실질적인 컨트롤 역할.
-
Model영역의 서비스를 호출하는 중개자 역할.
-
처리 결과에 따라 적절한 view로 이동할 수 있도록 View를 선택함.
Result
-
응답을 어떻게 만들 것인지 결정하는 역할.
-
리절트 타입에 따라 JSP와 같은 웹 리소스와 연동되거나 스트림을 이용하여 스트리밍도 가능함.
-
액션 인보케이션이 액션 실행 후 반환되는 리절트 코드에 해당하는 리절트를 호출하게 됨.
Struts2 Framework 요청 처리 과정
-
요청
-
필터 디스패처 진입.
-
필터 디스패처에서 액션매퍼의 도움으로 Struts2의 액션 요청(.action)인지 판단.
-
액션 요청일 경우 액션 프록시로 요청을 위임.
-
액션 프록시는 환경설정 관리자를 통해 작업 정보를 받고 액션 인보케이션을 생성후 작업을 위임.
-
액션 인보케이션에서 액션 실행전 인터셉터 호출
-
액션 인보케이션에서 액션 호출후 리절트 코드값을 리턴받음.
-
리턴받은 리절트 값에 해당하는 struts.xml의 매핑된 리절트를 찾고 렌더링.
-
액션 인보케이션에서 역순으로 인터셉터 호출.
-
응답.
'개발자 센터 > Struts2' 카테고리의 다른 글
struts2에서 세션(session) 사용하기 (0) | 2009.12.14 |
---|---|
Struts2 문자열 출력 예제 (0) | 2009.12.11 |
Struts2 Action : 액션 (0) | 2009.12.11 |
Struts2 Framework의 특징 (0) | 2009.12.11 |
Struts2 Framework 환경설정 방법 (0) | 2009.12.11 |