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 요청 처리 과정

  1. 요청
  2. 필터 디스패처 진입.
  3. 필터 디스패처에서 액션매퍼의 도움으로 Struts2의 액션 요청(.action)인지 판단.
  4. 액션 요청일 경우 액션 프록시로 요청을 위임.
  5. 액션 프록시는 환경설정 관리자를 통해 작업 정보를 받고 액션 인보케이션을 생성후 작업을 위임.
  6. 액션 인보케이션에서 액션 실행전 인터셉터 호출
  7. 액션 인보케이션에서 액션 호출후 리절트 코드값을 리턴받음.
  8. 리턴받은 리절트 값에 해당하는 struts.xml의 매핑된 리절트를 찾고 렌더링.
  9. 액션 인보케이션에서 역순으로 인터셉터 호출.
  10. 응답.

'개발자 센터 > 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
Posted by 피곤키오
,