본문 바로가기
Programming/Struts

struts-config.xml 파일 정보

by 막이 2012. 9. 12.

struts-config.xml 파일의 정보

<struts-config> ... </struts-config> 모든 설정은 이 엘리먼트안에 정의 된다.

1. data-sources

미리 정의된 JDBC 커넥션을 통해 데이터베이스에 접근할 수 있는 엘리먼트

<data-sources>

<data-source>

<set-property property="autoCommit" value="true" />

<set-property property="description" value="DataBase Struts" />

<set-property property="driverClass" value="com.mysql.jdbc.Driver" />

<set-property property="maxCount" value="10" />

<set-property property="minCount" value="4" />

<set-property property="user" value="root" />

<set-property property="password" value="1234" />

<set-property property="url" value="jdbc:mysql://localhost:3306/stone" />

</data-source>

</data-sources>

2. form-beans

스트럿츠1에서 사용하는 ActionForm을 정의한다. 각각의 ActionForm은 하위 요소인 form-bean 요소를 통해 정의되며,

그 정의는 org.apache.struts.action.ActionFormBean 클래스에 저장된다. 만약 스트럿츠를 확장하기 위해

ActionFormBean 클래스를 상속받은 고유의 클래스를 정의하여 사용하고자 한다면 type 속성에 패키지 명을 포함한

클래스의 이름을 지정할 수 있다.

form-bean 요소의 속성으로 다음을 지정할 수 있다.

속성

설명

className

상속 후 패키지 명을 포함한 클래스의 이름을 작성

dynamic

DynaActionForm 을 사용 한다면 true

name

ActionForm의 고유한 이름

type

ActionForm의 패키지 명을 포함한 클래스 이름

특별히 스트럿츠를 확장한 경우가 아니라면 다음과 같이 name 과 type을 지정한다.

<form-beans>

<form-bean name="menuForm" type="kr.co.form.MenuForm" />

<form-bean name="bbsForm" type="kr.co.form.BbsForm" />

<form-bean name="pwdForm" type="kr.co.form.PwdForm" />

</form-beans>

3. global-exceptions

모듈 전체에서 공통으로 사용할 Exception들에 관한 설정을 정의한다. exception 요소의 정의는 action 요소에서도

정의할 수 있지만 이 경우에는 Exception 정의가 지정된 Action에서만 영향을 미치며, 모든 Action에 걸쳐 공통으로

처리해야 할 Exception이 있으면 이 엘리먼트가 효과 적인 방법이 된다.

속성

설명

bundle

국제화 기능이 적용된 에러 메시지 출력할 경우 메시지를 검색할 리소스 번들

className

상속 후 패키지명을 포함한 클래스의 이름을 작성

handler

상속 후 패키지명을 포함한 클래스의 이름을 작성

key

국제화 기능이 적용된 에러 메시지를 출력할 경우

메시지의 key

path

예외가 발생했을 때 포워드할 리소스의 경로

scope

ActionError 인스턴스를 저장할 스코프. request나 session으로 지정할 수 있으며 지정하지 않으면 request로 간주한다

type

처리할 Exception의 전체 이름

<global-exceptions>

<exception

type="kr.co.service.NoSuchEmployeeException"

key="exception.no.such.employee"

scope="request"

path="/common/globalException.jsp" />

</global-exceptions>

4. global-forwards

모든 ActionActionForward를 리턴하여 RequestProcessor가 Action의 처리 결과를 보여줄 뷰로 포워드 도는

재전송(redirect)할 수 있도록 해야 한다. 이때의 뷰는 주로 JSP가 되겠지만 서블릿이나 다른 Action이 될 수도 있다.

속성

설명

className

ActionForward를 상속받은 클래스의 패키지 명을 작성

contextRelative

path 속성으로 지정된 리소스의 경로가 모듈의 루트 경로로부터의 상대경로가 아니라 애플리케이션 루트 경로로부터의 상대 경로라면 "true"로 지정

module

path 속성으로 지정된 리소스의 경로가 여기에 지정된 모듈의 루트 경로로부터의 상대 경로로 간주한다. 모듈 명은 "/"로 시작하며 루트 모듈로부터의 상대 경로로 지정하고자 한다면 모듈 명으로 "/"를 지정한다.

name

Action에서 뷰를 선택할 때 사용할 논리적인 리소스명

path

리소스의 실제경로

redirect

뷰를 호출할 때 포워드 대신 재전송을 사용하고자 할 경우 "true"를 지정

5. action-mappings

action-mappings는 요청 경로와 Action, ActionActionForm, ActionForward, Exception 등의 관계를 정의하는

struts-config.xml 파일에서 가장 중요한 요소이다. action-mappings는 여러 개의 action 요소를 하위 요소로 가지며,

org.apache.struts.action.ActionMapping에 저장된다. 만약 스트럿츠를 확장하기 위해 ActionMapping을 상속받은

고유의 클래스를 정의하여 사용하고자 한다면 type 속성에 패키지 명을 포함한 클래스의 이름을 지정할 수 있다.

속성

설명

attribute

요청 스코프나 세션 스코프에서의 ActionForm 이름. name 속성을 통해 사용할 ActionForm이 지정됐을 때만 유효하며, 별도로 지정하지 않으면 name 속성에서 지정한 이름이 그대로 사용

className

스트럿츠를 확장하기 위해 고유의 클래스를 정의하여 사용하고자 한다면 org.apache.struts.action.ActionMapping을 상속받은 클래스의 패키지 명을 포함한 이름을 지정

forward

JSP나 서블릿 같은 리소스로 포워드하고자 할 때 이곳에 경로를 지정

include

JSP나 서블릿 같은 리소스를 포함하고자 할 때 이곳에 경로를 지정

input

이 액션을 호출한 웹 리소스명. 요청 파라미터의 검증 시 에러가 발생하면 이 곳에 지정한 리소스로 되돌아 간다.

name

Action에서 사용할 Actionform의 이름

path

action 요소가 매핑될 요청 경로. 항상 "/" 로 시작

parameter

Action에 전달해줄 파라미터

prefix

요청 파라미터 중 특정한 이름으로 시작하는 파라미터들만 ActionForm에 설정

roles

턱정한 role의 사용자만 이 Action에 접근할 수 있도록 하고자 할 경우 이 Action에 접근할 수 있는 role들을 ','로 구분하여 지정한다.

scope

ActionForm을 담아 둘 스코프

suffix

요청 파라미터 중 특정한 이름으로 끝나는 파라미터들만 ActionForm에 설정하고자 한다면 지정

type

Action의 패키지 명을 포함한 클래스명. Action없이 forward, include 속성을 지정하여 뷰로 바로 이동하는 것이 아니라면 Action의 이름은 반드시 정의

unknown

정의되지 않은 요청 경로가 있을 때 기본으로 호출될 Action일 경우 "true"로 설정한다.

validate

ActionForm의 검증 로직의 수행 여부를 지정한다.

"true"로 지정하면 RequestProcessor는 파라미터를 ActionForm에 설정한 후 validate() 메소드를 호출한다.

action 요소는 다음의 하위 요소를 가질 수 있다.

description : action 의 설명

set-property : action의 속성으로 className을 지정할 경우 ActionMapping을 확장한 클래스에 전달될 고유의 설정 값

exception : Action 내에서 발생할 수 있는 Exception 처리 방법을 정의한다. global-exceptions 와 동일

forward : Action에서 선택할 수 있는 ActionForward를 정의 한다. global-forwards 와 동일

<action-mappings>

<action path="/passwordModify" type="org.apache.struts.actions.ForwardAction"

name="passwordForm" scope="request"

parameter="/hr/passwordModify.jsp" validate="false" />

<action path="passwordSave" type="kr.co.action.PasswordSaveAction"

name="passwordForm" scope="request" input="/hr/passwordModify.jsp">

<forward name="success" redirect="false" path="/common/SuccessMessage.jsp" />

<forward name="fail" redirect="false" path="/common/SuccessMessage.jsp" />

<forward name="retry" redirect="false" path="/hr/passwordModify.jsp" />

</action>

</action-mappings>

6. controller

스트럿츠 컨트롤러의 환경을 설정하기 위한 요소이다.

스트럿츠에서 컨트롤러로서의 역할은 대부분 RequestProcessor에서 이루어지므로 RequestProcessor의 설정이라고

봐도 될 것이다. RequestProcessor는 모듈당 한 개씩 생성하므로 controller 요소는 모듈에 대한 struts-config.xml

파일에서 한번만 설정될 수 있다.

속성

설명

bufferSize

파일 업로드를 처리할 때 사용할 버퍼 메모리의 크기. 별도로 지정하지 않으면 4096Byte(4KB)로 간주 한다.

className

스트럿츠를 확장하기 위해 고유의 클래스를 정의하여 사용하고자 한다면 org.apache.struts.config.ControllerConfig를 상속받은 클래스의 패키지 명을 포함한 이름을 지정

contentType

모듈의 기본 컨텐츠 타입. 문자 인코딩을 별도로 지정하지 않으면 "text/html"로 간주한다.

한글이나 다국어를 사용한다면 charset 설정을 하는 것이 좋다.

forwardPattern

forward 요소의 path 속성이 "/"로 시작하고 contextRelative가 true인 경우의 매핑방식을 정의한다.

inputForward

action 요소의 input 속성의 값을 근거로 최종 URL을 계산할 때 global-forward 또는 action의 forward 요소의 이름을 지정하고자 한다면 "true"로 설정한다. 디폴트값은 "false"로 action 요소의 path를 지정하는 것으로 간주한다.

locale

사용자의 로케일 정보를 세션에 저장하고자 한다면 true로 지정

maxFileSize

업로드 파일의 최대 크기 "K", "M", "G"를 크기의 단위로 지정할 수 있고, 별도의 지정이 없으면 "250M"이 지정

memFileSize

메모리에 보관할 업로드 파일의 최대 크기

위와 동일 하되 별도의 지정이 없으면 "250K"이 지정

nocache

브라우저의 캐시 기능을 정지시키는 옵션을 응답과 함께 HTTP 응답헤더에 담아 보내고자 한다면 "true"로 설정

pagePattern

스트럿츠 태그 라이브러리에서 page 속성을 어떻게 번역할 것인지를 지정

processorClass

스트럿츠를 확장하기 위해 고유의 클래스를 정의하여 사용하고자 한다면 org.apache.struts.action.RequestProcessor를 상속받은 클래스의 패키지명을 포함한 이름을 지정

temDir

파일 업로드 시 임시 작업 경로

실제로는 controller 요소에 특별한 설정을 하는 경우는 그리 많지 않고, 아래와 같이 contentType을 지정해 주고 locale을

세션에 저장하도록 설정하는 것만으로 충분하다.

<controller contentType="text/html; charset=utf-8" locale="true" />

7. message-resources

스트럿츠에서는 다국어 지원을 위해 모듈별로 웹 페이지의 텍스트 요소를 언어별로 정의한 리소스 번들을 지원한다.

리소스 번들은 message-resources 요소를 통해 위치를 지정할 수 있으며, 스트럿츠 태그 라이브러리를 이용하여

메시지를 출력할 수 있다.

속성

설명

className

메시지 리소스 정의를 보관하는 클래스. 스트럿츠를 확장하기 위해 고유의 클래스를 정의하여 사용하고자 한다면 org.apache.struts.config.MessageResourceConfig를 상속받은 클래스의 패키지 명을 포함한 이름을 지정

factory

MessageResourcesFactory 클래스. 스트럿츠를 확장하기 위해 고유의 클래스를 정의하여 사용하고자 한다면 org.apache.struts.util.MessageResourcesFactory를 상속받은 클래스의 패키지 명을 포함한 이름을 지정

key

메시지 리소스 번들이 ServletContext에 저장될 때 사용될 이름

null

"true"로 지정하면 메시지의 키를 검색할 수 없을 때 null 리턴

parameter

MessageResourcesFactory에 전달할 설정 파라미터

<message-resources parameter="resource/message" />

스트럿츠 태그를 이용하여 메시지를 출력할 때는 클래스 패스 내에서 (WEB-INF/classes가 메시지 번들을 가져다

놓기에는 가장 좋은 위치일 것이다.) parameter 속성으로 지정한 리소스 번들을 검색하여 메시지를 출력하게 될 것

이다. 위와 같이 message-resources 요소의 parameter 속성으로 "resource/messages"를 지정하게 되면,

스트럿츠에서는 "WEB-INF/classes/resource/messages.properties"라는 이름의 파일을 리소스 번들로 간주한다.

리소스 번들의 파일명은 사용자의 로케일 정보에 따라 달라질 수 있으며 명명 규칙은 이후 국제화에 대한 부분을

다룰 때 자세히 살펴볼 것이다.

8. plug-in

스트럿츠 컨트롤러에 플러그인을 설치한다. 플러그인은 스트럿츠 기반의 웹 애플리케이션에서 웹 애플리케이션 구동 시

동적인 자원을 처리할 수 있도록 해주며 스트럿츠의 확장을 위해서도 중요하게 사용된다.

플로그인의 패키지 명을 포함한 클래스 명을 className 속성으로 지정하며 set-property 요소를 통해 등록한

플러그인에 설정 사항을 전달 할 수 있다.

<plug-in className="org.apache.struts.tiles.TilesPlugin">

<set-property property="definitions-config" value="/WEB-INF/tiles/tiles-defs.xml" />

<set-property property="definitions-debug" value="2" />

</plug-in>

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation" value="/WEB-INF/spring/applicationContext.xml" />

</plug-in>

위는 타일즈(Tiles) UI 프레임워크와 강력한 Core 프레임워크 스프링(Spring)을 연동한 부분이다.

'Programming > Struts' 카테고리의 다른 글

Struts taglib  (0) 2012.09.12
struts web.xml 설정 태그  (0) 2012.09.12
global-forwards  (0) 2012.09.12