JAVA2010. 1. 4. 22:46

★Struts2의 개요
☞ Struts 프레임워크는 http://struts.apache.org에서 배포하는
   MVC기반의 모델2를 이용한 웹어플리케이션 개발을 돕는 프레임워크

☞ 웹어플리케이션에서 MVC패턴의 Controller부분을 담당하며, Controller의 기능을
   계층화하여 제공

☞ XML기반의 환경설정 파일을 이용하여 코드의 직접 수정을 최소화

☞ 다양한 태그라이브러리 지원으로 View에서의 데이터표현 작업을 효율적으로 처리 가능

☞ 리소스번들을 이용한 다양한 언어의 표현으로 웹어플리케이션의 국제화를 지원

☞ 현재 Struts 1 , Struts 2 , Struts 2.1 버전이 공개되어 있음


★Struts1의 단점
☞ 프레임워크의 핵심객체들이 POJO기반이 아님으로 객체들이 프레임워크에 종속적

☞ 객체들의 프레임워크 종속성으로 인해 모듈별 테스트가 힘듦

☞ ActionForm의 사용으로 인한 불필요한 작업과 코드량 증가

☞ 태그라이브러리의 부족으로 다양한 활용이 용이치 않음

☞ 과다한 XML설정으로 설정 작업이 많음


** POJO (wiki
-POJO is an acronym for Plain Old Java Object. The name is used to emphasize that the object in question is an ordinary Java Object, not a special object, and in particular not an Enterprise JavaBean (especially before EJB 3).


★ Struts2의 특징 및 장점
☞ Struts1과는 달리 WebWork2에 기반한 MVC모델 채택
☞ POJO(Plain Old Java Object) 기반의 Action
☞ Zero Configuration 지향
☞ Annotation을 이용한 설정
☞ 변경된 환경설정파일이 웹컨테이너 재시작없이 반영됨으로 개발편이성 증대
☞ 별도의 ActionForm이 필요치 않음
☞ 액션실행 전/후에 실행할 코드를 인터셉터를 이용해 정의
☞ 테마와 템플릿을 포함한 강력한 태그라이브러리 제공
☞ AJAX구현의 편이성 증대 (Dojo프레임워크 포함, ajax테마)
☞ OGNL(Object Graph Navigation Language) 지원
☞ 뷰와 값의 연결을 위해 ValueStack 사용
☞ 다양한 플러그인 적용 가능 (JFreeChart, SiteMesh, JasperReport, Spring …)
☞ 구글쥬스(Google Guice)프레임워크를 채택한 DI(Dependancy Injection) 제공

★Struts2에서 주로 개발해야할 영역
☞ Action
  클라이언트의 요청과 Model, 또는 Model의 응답과 클라이언트 View의 연결 역할

☞ Result
  클라이언트에게 서버의 응답을 보여주기 위한 방법 제공

☞ Configuration
  주요 기본제공 설정 외에는 개발자가 직접 설정


★ Action
☞ 클라이언트의 요청에 대한 비즈니스 로직을 실행하기 위한 창구
☞ Struts2에서 액션은 Singleton이 아님
   - 싱글턴이 아니므로 액션객체에 프라퍼티를 이용해 상태정보를 저장하는 것이 가능
☞ POJO
☞ 기본 엔트리포인트로 execute() 메소드 사용
☞ Struts1이 .do URL을 사용하는데 반해 .action URL을 사용

<action name=“myAction” class=“mypackage.MyActionClass”/>


★ Result
☞ 액션을 통해 수행된 Model의 처리결과를 출력하는데 사용됨

☞ 출력의 형태에 따라 다양한 Result타입 제공


<result name=“success” type=“dispatcher”>/dir/result.jsp</result>


★ Configuration
☞ struts.xml
   - 액션과 리절트 페이지 정의
   - 프레임워크의 사용자가 설정해야할 대부분의 작업 설정
   - /WEB-INF/classes 디렉토리에 위치함

☞ FilterDispatcher
   - struts2의 요청진입점
   - web.xml에 필터로 등록함

   <filter>
 <filter-name>struts2</filter-name>
 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
   </filter>
   <filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
   </filter-mapping>

Posted by Tiwaz