본문 바로가기

Struts/Struts Programming

[Struts] 스트럿츠 2의 핵심 기능

반응형

● MVC(Model-View-Controller) 프레임워크
 -. 스트럿츠 2는 스트럿츠 1과는 달리 완전히 다른 MVC 아키텍처를 사용하고 있다.
 -. 2005년 자바원(JavaOne)에서 스트럿츠Ti(Titanium) 초안을 구성해 본격적인 스트럿츠 2 개발이 시작되었다.

● 웹워크2(WebWork2)의 아키텍처 채용
 -. 스트럿츠 2는 간결함과 세련미, 툴 친화성과 페이지 플로우의 장점을 스트럿 1과 결합했다.
 -. 스트럿츠 2의 아키텍처는 웹워크2의 아키텍처를 그대로 적용하고 있다.

● POJO 기반의 작업과 제로 컨피규레이션 지향으로 직관적인 개발 가능
 -. 스트럿츠 2는 직관적으로 개발할 수 있도록 디자인되었다.
 -. POJO(Plain Old Java Object)기반으로 쉽고 유연하게 개발할 수 있으며 무엇보다 환경설정의 내용이 간단해진 것이 큰 장점이다.
 -. 스트럿츠 2는 제로 컨피규레이션(Zero Configuration)을 지향한다.
 -. 기본값을 사용해 많은 설정을 생략할 수 있으며 소스 상에 어노테이션(Annotation)을 삽입해 설정 파일에서 정의해야 할 내용을 생략하거나
    유효성 검사, 인터셉터의 기능을 어노테이션으로 제공한다.
 -. 스트럿츠 2는 와일드카드 매핑을 사용해 패턴을 가진 여러 액션을 하나의 정으로 함축할 수 있는 기능도 제공한다.

● 웹 컨테이너 재시작 없이 신속한 리로딩 제공
 -. 스트럿츠 2는 신속한 리로딩 기능을 제공한다.
 -. 변경된 환경설정 내용이 웹 컨테이너를 다시 시작하지 않아도 리로드되므로 개발 시에 매우 유용하다.

● POJO 기반으로 프레임워크에 종속적이지 않으며 테스트가 쉽다.
 -. 스트럿츠 2와 가장 핵심기능으로 볼 수 있는 액션 클래스를 POJO로 사용할 수 있도록 디자인 하여
    프레임워크를 사용하면서도 프레임워크에 종속되지 않는다.
 -. 액션 클래스는 HTTP에 독립적이므로 Mock 객체에 의존하지 않고 손쉽게 테스트할 수 있는 이점을 가진다.

● 인터셉턴의 지원으로 액션에 대한 AOP(Aspect-Oriented Pro gramming)기능 지원
 -. 스트럿츠 2는 HTTP요청을 중간에 가로채서 액션 실행 전과 후에 실행할 코드를 별도의 계층으로 구성할 수 있는 인터셉터를 사용한다.
    이는 AOP와 같은 개념으로 다양한 인터셉터를 제공하고 있으며, 아주 간단한 설정으로 원하는 인터셉터만을 사용할 수 있다.
    예를 들면, 요청의 파라미터를 모델 데이터로 변환하는 단순하고 지루한 작업을 자동화 할 수 있다.

● 강력한 태그 라이브러리 제공
 -. 스트럿츠 2는 다양한 태그 라이브러리를 제공한다.
 -. 테마와 템플릿을 사용해 컴포넌트 기반의 작업을 할 수 있도록 재사용성이 높은 인터페이스를 제공한다.

● 쉽게 구현할 수 있는 Ajax 기능 제공
 -. 스트럿츠 2는 Dojo 프레임워크를 포함하고 있고, Ajax 테마를 지원하는 태그를 사용해 특별한 작업 없이 Ajax 애플리케이션을 구현할 수 있다.
 -. 컴포넌트 기반의 개념을 적용하기가 좋고 더 풍부한 인터페이슬르 만들 수 있다.

● 다른 오픈소스 프레임워크의 인터페이스 제공으로 쉬운 연동
 -. 스트럿츠 2는 자신 외에도 유용한 오픈소스 프레임워크를 쉽게 사용할 수 있도록 플러그인을 제공한다.
 -. 비즈니스 데이터를 차트로 출력하는 JFreeChar, 리포트 출력을 위한 JasperReport, 페이지 레이아웃을 구성할 때 도움을 줄 수 있는

     Sitemesh, DI(Dependency Injection) 및 OR Mapper와 함께 사용하기 위한 트랜잭션 관리등을 위한 Spring, Ajax 프로그래밍의 데이터 전송을 위한

     JSon과 같은 다양한 플러그인을 제공한다.(플러그인은 지금도 계속 만들어 지고 있다.)

● 의존성 주입 컨테이너를 사용해 의존성 결합도를 낮춤
 -. 객체 간의 의존성 결합도를 낮추기 위해 의존성 주입 컨테이너를 사용할 수 있다.
 -. 스트럿츠 2 내부의 주요 객체를 다루기 위해 구글 주스(Guice) 프레임워크를 사용하고 있으며 스프링과 같은 뛰어난 프레임 워크를 사용할 수 있다.

● 다양한 뷰 제공
 -. 스트럿츠 2는 JSP 외에도 FreeMarker, Velocity와 같은 다양한 뷰 기술을 지원한다.
 -. 최근 자바스크립트 기반의 UI 프레임워크와도 연동하기 쉽다.

● 유용한 표현식 언어 제공
 -. 스트럿츠 2는 OGNL(Object Graph Navigation Language)을 제공하여, 스트럿츠 2의 태그를 사용할 때 데이터의 표현을 매우 자유롭게 표현할 수 있다.
 -. 또한 스트럿츠 2 태그 대신 JSTL과 같은 표현식 언어를 대신 사용할 수도 있다.

반응형