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
모든 Action은 ActionForward를 리턴하여 RequestProcessor가 Action의 처리 결과를 보여줄 뷰로 포워드 도는
재전송(redirect)할 수 있도록 해야 한다. 이때의 뷰는 주로 JSP가 되겠지만 서블릿이나 다른 Action이 될 수도 있다.
속성 |
설명 |
className |
ActionForward를 상속받은 클래스의 패키지 명을 작성 |
contextRelative |
path 속성으로 지정된 리소스의 경로가 모듈의 루트 경로로부터의 상대경로가 아니라 애플리케이션 루트 경로로부터의 상대 경로라면 "true"로 지정 |
module |
path 속성으로 지정된 리소스의 경로가 여기에 지정된 모듈의 루트 경로로부터의 상대 경로로 간주한다. 모듈 명은 "/"로 시작하며 루트 모듈로부터의 상대 경로로 지정하고자 한다면 모듈 명으로 "/"를 지정한다. |
name |
Action에서 뷰를 선택할 때 사용할 논리적인 리소스명 |
path |
리소스의 실제경로 |
redirect |
뷰를 호출할 때 포워드 대신 재전송을 사용하고자 할 경우 "true"를 지정 |
5. action-mappings
action-mappings는 요청 경로와 Action, Action과 ActionForm, 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 |