스트러츠와 웹워크는 Struts2 프레임워크에서 같이 조인했다. 스트러츠 2 프레임워크는 매우 확장성 있고, 어떠한 크기의 엔터프라이즈 웹 개발에 대해서도 우아한 면을 가지고 있다. 이번 섹션에서는 스트러츠 2의 프레임워크 아키텍쳐에 대해서 설명해 볼 것이다.
Request Lifecycle in Struts 2 applications
- User Sends request: 사용자는 몇가지 자원을 요청하기 위해서 서버에 요청한다.
- FilterDispatcher determines the appropriate action: Filter Dispatcher은 요청을 보고 적합한 Action을 찾는다.
- Interceptors are applied: Interceptor은 workflow, validation, file upload와 같은 공통적인 기능을 수행하기 위해서 요청에 자동적으로 대응한다.
- Execution of Action: 그리고 액션 메소드가 데이터베이스와 연관된 저장이나 검색에 대한 작업을 수행한다.
- Output rendering: 결과를 렌더링 한다.
- Return of Request: 요청에 대한 응답을 하기 위해서 interceptor의 순서에 의해서 응답한다. 요청에 대한 결과는 추가된 프로세싱의 클린업을 지원을 허용한다.
- Display the result to user: 마지막으로 서블릿 컨테이너를 반환한다. 사용자의 브라우저로 출력을 보인다.
Image: Struts 2 high level overview of request processing:
Struts 2 Architecture
Struts 2는 매우 세련되고 유연한 프런트 컨트롤러 프레임워크로 Java Filters, Java Beans, ResourceBundles, XML과 같은 많은 표준 기술들을 이용하였다.
Model을 위해서 프레임워크는 데이터 엑세스 기술로 JDBC, EJB, Hibernate를 이용하고 View 를 위해서 프레임워크는 JSP, JTL, JSF, Jakarta Velocity를 통합하고 있다.
Exception Handling:
Struts 2 프레임워크는 예외 핸들러와 인터셉터를 정의할 수 있도록 하고 있다.
- Exception Handlers:
Exception handlers는 글로벌 혹은 지역적인 예외처리 핸들에 대한 정의를 허용한다. 프레임워크는 예외를 캐치하고 페이지에 적합한 메시지와 예외에 대항 상세한 부분을 보여준다.
- Interceptors:
Interceptors는 액션에서 "request-processing lifecycle" 로 주로 사용된다. 인터셉터는 공통적인 함수, 즉, workflow, validation과 같은 기능을 지정하게 해 준다.
Struts 2 Architecture
다음 다이어그램에 조각에서 스트러츠 2 프레임워크 아키텍쳐와 톰캣과 같은 서블릿 컨테이너에서 초기화 값이나 표준 필터테인에 의해서 넘어가는 내용을 보여준다.
Image: Struts 2 Architecture
필터 체인은 다음과 같은 것을 포함한다.:
- Action ContextCleanUp filter:
ActionContextCleanUp 필터는 선택적이며, SiteMesh 플러그인처럼 다른 기술과 통합한 개발을 수행하고자 할 경우 매우 유용하다.
- FilterDispatcher:
FilterDispatch 는 ActionMapper이 Action을 호출할지에 대한 결정을 한다. 만약 action이 invoke를 요청할때 FilterDispathcer는 ActionProxy에 컨트롤을 위임한다.
- ActionProxy:
ActionProxy는 설정파일 관리자로 부터 도움을 주고자 할때 사용되며, struts.xml에 초기화 된다. ActionProxy는 ActionInvocation을 생성한다. 이것은 command패턴을 구현한 것이다. ActionInvocaztion프로세스는 Interceptor를 호출하고, action을 호출한다. ActionInvocation은 제공하는 결과를 검색한다. result는 JSP나 템플릿 렌더링을 호출한다.
다음으로 Interceptors는 역순으로 수행된다. 마지막으로 응답은 web.xml파일에 설정된 필터를 통해서 응답을 반환한다. 만약 ActionContextCleanUp필터가 설정되었다면 FilterDispatcher은 ThreadLocal ActionContext를 클리어 하지 않는다. 만약 ActionContextCleanUp필터가 지정되지 않았다면 FilterDispatcher는 모든 ThreadLocals을 클린업 한다.
이번 섹션에서는 Struts2 프레임워크에 대해서 배워보았다.
'WEB_Programming > Struts2' 카테고리의 다른 글
Strtus2 Feature (0) | 2008.06.10 |
---|