관리 메뉴

nkdk의 세상

팁] 여러개의 스트럭처 config 설정 모듈화 시키기 본문

My Programing/Framework

팁] 여러개의 스트럭처 config 설정 모듈화 시키기

nkdk 2008. 3. 9. 22:08
[모듈별작업을 위한 struts-config.xml설정]



1.모듈디렉토리별분리형



config



/WEB-INF/config/am/struts-config.xml,

/WEB-INF/config/bm/struts-config.xml







2. 한개디렉토리에 struts-config.xml의 파일명으로 분리형



config



/WEB-INF/config/struts-config-am.xml,

/WEB-INF/config/struts-config-bm.xml







3. 모듈별config파라미터로 분리해서 등록하는형



config/am



/WEB-INF/config/am/struts-config.xml







config/bm



/WEB-INF/config/bm/struts-config.xml











# 1번방식 : 모듈디렉토리별분리형

디렉토리별로 struts-config.xml을 따로분리하여, 모듈별로 적용한다.

설정은 config파라미터로 하며 ,(쉼표)로 구분하여 무한대로 등록가능하다.



#2번방식 : 한개디렉토리에 struts-config.xml의 파일명으로 분리형

같은 디렉토리내에 struts-config.xml의 파일명을 다양하게 부여하므로서

무한대로 등록한다. 1번방식과 마찬가지로 설정은 config파라미터로하며 ,(쉼표)로 구분하여 무한등록가능하다.



#3번방식 : 모듈별config파라미터로 분리해서 등록하는형

특징적으로 설정시 param-name이 config/${prefix} 형태로 주어지며, <forword태그설정시

<forward name=’aaa’ contextRelative=’true’ path=’bbb’/>

처럼 1,2번방식과달리 contextRelative옵션이 추가되어야 jsp를 정확히 찾을수 있습니다.

또한 url호출시에도 1.2번방식과 달리 1,2번이 /abc.do로 호출했다면, 이방식에서는

모듈명/abc.do로 호출해야합니다.(여기서주의해주세요!)



contextRelative란 컨텍스트에 상대적이란 뜻이다.

컨텍스트에 상대적이면 컨텍스트명은 디폴트로 간주하고, 표시하지않겠다. 그리고 그다음의 경로부터 표기한다는뜻이다. 이때’/’부터 시작해서 설정하게된다.



본강좌의 어플리케이션구조를 예로들면, struts라는 웹어플리케이션명이 있고 그아래에 모든 모듈항목들이 존재한다. 이때 struts디렉토리가 컨텍스트이다. 그럼 context에 상대적이므로

u



1,2번방식에서의 forward태그는 contextRelative가 없다.



<forward name="/jsp/Form2Struts_1.jsp" path="/jsp/Form2Struts_1.jsp"/>





3번방식에서도 1,2번처럼 똑 같은 형태의 forward태그를 설정하였다. 어떤결과가 나올까요?

config/am 으로 설정한덕에 기본적으로 모듈에상대적으로 경로를 찾게된다. 따라서, url/struts/am/ 아래에 있는 jsp/Form2Struts_1.jsp/에 있는 jsp를 찾을려고 시도하게된다.

찾았더니 없더라, 따라서 (/am/jsp/Form2Struts_1.jsp) is not available.정도의 에러메세가 뜨게되겠죠.

자 이제 이 문제를 어떻게 조치해야할까요?

>>해결책1. /am/디렉토리를 만들고 그아래에 jsp이하의 파일들을 옮기면됩니다. 즉패쓰를 모듈명을 포함하도록 맞춰주면됩니다.(너무상식적인방법)

>>해결책2. 설정방식을 변경하는데 모든 디렉토리구조까지 바뀌어야한댜면 손실이 커죠?

그냥 처음부터 간단히 설정파일내에서만 contextRelative=’true’ 있었다면 자동으로 상대경로를 찾아가게되는거죠.