Struts2 연동
From JCFWiKi
Copyright © 2007 Daewoo Information Systems Co., Ltd. |
|
JCF는 특별한 요구 사항이나 기술적인 이슈가 없다면, 프리젠테이션 단에 스트럿츠2를 적용하는 것을 권장합니다. 여기서는 스트럿츠2를 적용하기 위한 설정 부분만을 다룹니다. 구체적인 스트럿츠2의 설정 방법은 Struts2 Configuration 부분을 참고하십시오. |
목차 |
[편집] 스트럿츠2를 사용하기 위해 설정해야 할 것들
- 스트럿츠2는 스트럿츠1.x 버전들과는 다르게 서블릿 필터를 통해서 초기화 되고, 액션 요청을 처리하게 됩니다. 스트럿츠2의 아키텍처가 웹워크2의 아키텍처를 적용함으로서 달라진 점입니다. 따라서 신경써야 하는 부분들은 다음과 같습니다.
- A. 관련 라이브러리 넣기
- B. web.xml에 스트럿츠2 필터 및 필터 매핑 선언하기
- C. struts.xml 생성하고 작성하기(클래스패스 루트에 존재해야함.)
- A,B,C번의 작업이 끝나면 스트럿츠2를 사용할 준비가 다 되었다고 보면 됩니다. 준비가 되었으니, 스트럿츠 액션 클래스를 만들고, 해당 액션을 struts.xml 등에 정의해주는 작업을 통해 애플리케이션을 만들어가면 됩니다. struts.xml을 작성하는 자세한 부분은 Struts2 Configuration 가이드를 참고하시면 됩니다. 여기서는 위의 1,2,3번을 좀더 살펴 보겠습니다.
[편집] 1. 관련 라이브러리 넣기
- 스트럿츠2의 자체 라이브러리와 이 라이브러리들의 의존성을 가지는 다른 라이브러리들이 있습니다. 가장 기본적인 리스트는 아래와 같습니다.
- struts2-core-2.0.11.jar
- xwork-2.0.4.jar
- ognl-2.6.11.jar
- freemarker-2.3.8.jar
- commons-logging-1.0.4.jar
- 기본적으로 위의 라이브러리만 있으면 스트럿츠2가 구동할 수 있으며, 스트럿츠에서 제공하는 기능에 따라 필요한 라이브러리를 추가해 나가면 됩니다.
[편집] 2. web.xml에 스트럿츠2 필터 및 필터 매핑 선언하기
- 스트럿츠2에서 사용하는 기본적인 필터는 다음과 같습니다.
- FilterDispatcher 필터 : 스트럿츠를 초기화 하고, 스트럿츠와 관련된 요청들(액션 요청등..)이 처리되기 시작하는 진입점이 됩니다.
- ActionContextCleanUp 필터 : 필터 기반의 타 프레임워크 혹은 단위 필터 모듈의 작동을 지원하기 위한 선택적인 필터 입니다. 기본적으로 FilterDispatcher 필터는 액션 요청의 처리가 끝났을 때, 요청 자체에 설정된 정보들을 삭제 합니다. 이때 타 필터에서 필요로 하는 정보들까지 삭제 될수 있으므로 이러한 정리 작업을 FiterDispatcher가 직접하지 않고, ActionContextCleanUp에게 위임 하면서 다른 필터들이 FilterDispatcher 필터와 ActionContextCleanUp 필터 사이에 실행되도록 함으로서, 필요한 정보의 손실을 막을 수 있습니다.
- 각 필터의 설정은 다음과 같이 합니다.
<filter> <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> </filter> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 다른 필터 들을 추가하는 부분 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
- 특이 사항은 ActionContextCleanUp는 선택적인 것이며, 타 필터들을 등록할 때는 ActionContextCleanUp를 사용하면서 적합한 위치에 필터들을 위치 시켜야 한다는 점입니다(참고로 필터들은 필터 매핑이 나열된 순서대로 적용됩니다.).
[편집] 3. struts.xml 생성하고 작성하기
- 스트럿츠2는 반드시 struts.xml을 찾게 됩니다. 클래스 패스 루트(%webapp_root% / WEB-INF / classes / struts.xml)에 struts.xml이 존재해야 하는데, 스트럿츠2는 현재 2.0.11 버전에서도 계속해서 개선되고 있는 중이므로 이러한 위치 선택은 유연하게 바뀌어 질 수도 있을거라 생각합니다.
- 다음은 struts.xml 파일의 예제 입니다.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 디버깅 시 유용한 데이터를 보기 위한 상수를 지정하는 부분입니다.(런타임에서는 제거해야 합니다. --> <!-- constant name="struts.devMode" value="true" /--> <!--스프링 프레임워크를 연동하여 오브젝트 팩토리로 사용하는 경우 설정입니다. /--> <!--constant name="struts.objectFactory" value="spring" /--> <!-- struts.xml 파일을 분리하여 관리하는 경우에 include를 사용합니다. --> <!--include file="config/struts-common.xml"/--> <!-- 각각의 액션들을 정의하는 부분입니다. 모든 액션들은 하나의 패키지에 소속되어야 합니다. --> <!--package name="manager" extends="struts-default" namespace="/manager"--> <!--action name="view"--> <!--result>/manager/manager.jsp</result--> <!--/action--> <!--/package--> </struts>
