Configuration

Anyframe Web를 사용하기 위한 설정 파일에 대해 알아본다.

web.xml

웹 어플리케이션의 배포 지시자(Deployment Descriptor)로 J2EE 환경에서 웹 어플리케이션이 어떻게 배포되어야 하는지를 기술하는 컴포넌트이다. XML 구문으로 기술되며 웹 어플리케이션 root 바로 아래 서브 디렉토리인 WEB-INF에 위치한다.

servlet, servlet-mapping 설정

<servlet>설정
  • ActionServlet을 확장한 DefaultActionServlet을 등록
  • 요청(request) 매핑
  • 초기화 파라미터 설정
  • servlet launch 시에 필요한 몇가지 설정 option
Name Purpose / Default Value
config Default application의 struts config file이 있는 상대(module-relative)경로를 나타낸다. Default value는 /WEB-INF/struts-config.xml이다.
config/sub1 Sub-application을 사용할 때, config/와 sub-application의 prefix를 사용하여 기술한다. 예로, hello라는 prefix를 가진 sub-application이 있다면, config/hello라는 이름과 /WEB-INF/struts-hello-config.xml라는 값으로 init-param element를 기술해야 한다. 또한, sub-application이 여러 개 있다면 그 각각에 대해서 init-param element를 기술해야 한다. (우리는 config와 config/sub1, config/sub2 등을 각각 하나의 module이라고 부른다.)
convertNull 강제로 forms의 property 값들을 null로 populate한다. 예를 들어, convertNull 값이 true이면, java.lang.Integer type의 property들은 default value로 0이 아닌 null이 된다. convertNull은 default로 false이다.
debug Servlet의 Logging 수준을 결정한다. Default 값은 0이고, 0~6 사이의 수를 넣을 수 있다. 6이 가장 많은 양의 logging 정보를 출력할 것이다.
<servlet-mapping>설정
  • request의 url 패턴을 <servlet>과 mapping - .do 가 붙은 형태의 request가 오면 action 이라는 servlet이 처리하도록 설정함.

Samples

다음은 web.xml 파일 중 servlet, servlet-mapping 설정에 대한 예제이다.
  • Configuration
  • .do url 패턴의 request에 대하여 front controller 서블릿인 DefaultActionServlet이 처리하도록 설정되어 있으며 초기화 파라메터로 해당 웹 어플리케이션에서 사용하는 struts-config 설정 파일이 복수개로 등록되어 있다.(,로 복수개 설정) debug, convertNull 의 초기화 파라메터 설정도 확인할 수 있다. load-on-startup 설정은 서블릿 엔진이 시작될 때 로드될 우선 순위를 지정한 값이다.
<servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>anyframe.web.struts.common.action.DefaultActionServlet</servlet-name>
		<init-param>
			<param-name>config</param-name>
			<param-value>/config/struts/struts-config.xml
			             ,/config/struts/struts-config-user.xml
			             ,/config/struts/struts-config-sale.xml
			             ,/config/struts/struts-config-purchase.xml
			</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>convertNull</param-name>
			<param-value>true</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
</servlet-mapping>

taglib 설정

<taglib>설정
  • JSP에서 사용할 JSP tag libraries 선언
  • taglib-uri : tag library의 URI 경로
  • taglib-location : tag library에 대한 설명 파일의 경로

Samples

다음은 web.xml 파일 중 taglib 설정에 대한 예제이다.
  • Configuration
<taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</param-name>
        <taglib-location>/WEB-INF/struts-bean.tld</param-location>
</taglib>
<taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</param-name>
        <taglib-location>/WEB-INF/struts-html.tld</param-location>
</taglib>
<taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</param-name>
        <taglib-location>/WEB-INF/struts-logic.tld</param-location>
</taglib>
JSP에서는 taglib-uri의 element 값으로 선언하여 사용한다.
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

struts-config.xml

Struts-enabled 웹 어플리케이션을 위한 배포 지시자로 Model, View, Controller를 함께 엮는 주된 설정 파일이다.
  • 코드에서 설정 정보 분리
  • Struts DTD : struts-config_1_2.dtd를 준수
  • Action, ActionForm, JSP 간의 mapping 정보 저장
  • 하나 이상의 configuration file 사용 가능
  • 서브 모듈 별 설정 파일 정의 가능
  • web.xml 에서 struts configuration file 설정 부분 예
<init-param>
	<param-name>config</param-name>
	<param-value>/config/struts/struts-config.xml
	             ,/config/struts/struts-config-user.xml
	             ,/config/struts/struts-config-sale.xml
	             ,/config/struts/struts-config-purchase.xml
	</param-value>
</init-param>
  • struts configuration file 설정 요소

data-sources Element

<data-sources>설정
  • 기본적인 data source들을 웹 어플리케이션에 setup
  • 여러개의 data source들 등록 가능
  • 흩어져 있는 database connection을 한곳에서 관리 가능
  • connection pooling mechanism을 이용하여 performance와 scalability를 향상
Name Description
className Data source들의 configuration 정보를 담고 있을 객체이다. Default로org.apache.struts.config.DataSourceConfig를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
key 한 data source가 저장될 servlet context attribute의 name 값이다. Default 값은 org.apache.struts.Globals.DATA_SOURCE_KEY의 값이다.
type 한 data source의 구현 클래스를 나타낸다. 이 클래스는 javax.sql.DataSource를 implements해야 하며, default 값은 org.apache.struts.util.GenericDataSource이다.

Samples

다음은 struts-config.xml 파일에서 data-sources 설정에 대한 예제이다.
<data-sources>
<data-source>
        <set-property property="autoCommit" value="false"/>
        <set-property property="description" value="DB Connection Pool"/>
        <set-property property="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
        <set-property property="key" value="REFDB"/>
        <set-property property="maxCount" value="5"/>
        <set-property property="minCount" value="1"/>
        <set-property property="user" value="scott"/>
        <set-property property="password" value="tiger"/>
        <set-property property="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
</data-source>
</data-sources>
Struts 데이터소스 사용의 고려점
Struts1.1에서부터 GenericDataSource 의 사용이 권장되지 않았다. 이 클래스는 결코 대규모 어플리케이션에서 필요로 하는 고가용성을 지닌 데이터 소스 구현물로 설계되지 않았다. GenericDatatSource는 소규모 어플리케이션을 위한 것이고 완성도 높은 다른 데이터 소스 제품들처럼 진보된 기능도 전혀 없다. 데이터 소스 구현물이 필요하다면 사용중인 컨테이너에서 제공하는 것 또는 Commons DBCP 프로젝트(http://commons.apache.org/dbcp/)등을 적용하기를 권한다. (from Programming Jakarta Struts by Chuck Cavaness. November 2002.)

form-beans Element

<form-beans>설정
  • Action 수행에 사용되는 form bean의 정보 설정
  • 여러 개의 form-bean element 구성 가능
  • <form-bean>은 여러 개의 <form-property> 하위 element들을 가질 수 있음
다음은 form-bean element의 attribute들이다.
Name Description
className Form bean들의 configuration 정보를 담고 있을 객체이다. Default로org.apache.struts.config.FormBeanConfig를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
dynamic Form bean의 type attribute가 org.apache.struts.action.DynaActionForm을 상속 받아 구현한 클래스이면, 이 attribute는 true여야 한다. Default 값은 false이다.
name 이 form bean의 이름이고, 다른 form bean들과 구분될 수 있는 identifier이다. [required]
type 이 form bean의 구현 클래스를 나타낸다. 이 클래스는 ActionForm의 서브클래스여야 한다. [required]

다음은 form-property element의 attribute들이다.
Name Description
className Form property들의 configuration 정보를 담고 있을 객체이다. Default로org.apache.struts.config.FormPropertyConfig를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
initial 이 property의 initial 값을 나타내고, 문자로 표현된다.
name Form bean이 사용하는 이 property의 이름이다. [required]
size Form property의 type attribute가 array일 경우에, 그 array elements의 개수를 나타낸다.
type Form bean이 사용하는 이 property의 type이다. 예를 들어, property가 문자일 경우에는 java.lang.String, 숫자일 경우에는 int, float, double 등이 올 수 있다. [required]

Samples

다음은 struts-config.xml 파일에서 form-beans 설정에 대한 예제이다.
<form-beans>
	<form-bean
		name="helloForm"
		type="com.sds.helloapplication.forms.HelloForm">
	</form-bean>
	<form-bean 
		name="employeeForm"
	  	type="org.apache.struts.action.DynaActionForm">
		<form-property name="name" type="java.lang.String"/>
		<form-property name="age" type="int"/>
		<form-property name="department" type="java.lang.String" initial="2"/>
		<form-property name="flavorIDs" type="java.lang.String[]"/>
	</form-bean>
</form-beans>
DynaActionForm
Struts 어플리케이션에서 각 Form에 대한 별개의 실재하는 ActionForm 클래스를 관리하는 것은 많은 시간을 요한다. ActionForm을 직접 작성하는 대신 위의 두 번째 form-bean 설정과 같이 struts-config.xml 상에 bean의 프로퍼티, 타입, 디폴트 값을 나열함으로써 이러한 어려움을 완화시킬 수 있다. 하지만 설정이 복잡하며 성능이 저하되는 문제점이 존재한다.

global-exceptions Element

<global-exceptions>설정
  • 에러나 Exception 처리를 정의하는 선언적인 방법
  • 모든 action에서 사용할 수 있는 global level Exception 처리를 정의
  • 하위로 여러 개의 <exception> element를 가질 수 있음
예외 선언의 우선순위
<exception>은 전역(global) level과 action level 에서 정의될 수 있는데 action level 에서 선언된 것이 더 우선순위가 높다.
다음은 exception element의 attribute들이다.
Name Description
bundle Exception의 handler 클래스가 사용하는 message resources bundle에 대한 servlet context attribute의 name 값이다. Default 값은 org.apache.struts.Globals.MESSAGES_KEY의 값이다.
className Exception들의 configuration 정보를 담고 있을 객체이다. Default로 org.apache.struts.config.ExceptionConfig를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
handler 이 exception이 발생할 때, 이 exception을 처리하는 클래스를 나타낸다. 즉, handler 클래스는, 어떤 exception이 발생하면, 적절한 error message(key attribute)와 함께 적절한 페이지(path attribute)로 forward해 주는 클래스이다. Default로 org.apache.struts.action.ExceptionHandler를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
key 이 exception이 발생할 때, message resource bundle에서 찾아 낼 error message의 key 값이다. [required]
path 이 exception이 발생할 때, forward할 resource(*.do, *.jsp 등)의 상대(module-relative)경로를 나타낸다.
scope ActionError 객체에 접근할 context의 type을 나타낸다. request 또는 session. Default 값은 request이다.
type Exception Handling을 수행할 exception의 type을 나타낸다. [required]

Samples

다음은 struts-config.xml 파일에서 global-exceptions 설정에 대한 예제이다.
<global-exceptions>
        <exception
            key="exception.key"
            type="java.lang.NullPointerException"
            handler="com.sds.helloapplication.exceptions.ExceptionHandler"/>
        <exception
            key="global.error.invalidlogin"
            type="com.sds.helloapplication.exceptions.InvalidLoginException"
            scope="session"
            path="/security/signin.jsp"/>
</global-exceptions>

global-forwards Element

<global-forwards>설정
  • 실제 forward 또는 redirect 할 수 있는 URI를 논리적인 이름으로 맵핑
  • <forward> element를 이용해서 여러 개의 URI mapping 설정
  • 하나의 forward element는 하나의 논리적인 이름을 module-relative 또는 context-relative URI 경로로 매핑함 (URI 경로를 직접 사용하는 것 보다 logic 내부적으로 정해진 이름을 사용함으로써, view로부터 controller와 model을 분리)
  • 모든 action에서 사용할 수 있는 global level의 forward를 정의
forward 의 우선순위
<forward>은 전역(global) level과 action level 에서 정의될 수 있는데 action level 에서 선언된 것이 더 우선순위가 높다.
다음은 forward element의 attribute들이다.
Name Description
className Forward들의 configuration 정보를 담고 있을 객체이다. Default로 org.apache.struts.config.ActionForward를 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
contextRelative true로 지정할 경우 path 속성에 지정된 리소스를 컨텍스트 상대 경로로 인식한다. 이 속성은 다른 하위 어플리케이션에 속한 path 속성에 지정된 리소스들의 경우를 위해 설정한다. 선택적으로 사용할 수 있는 속성이며 기본 값은 false이다.
name 이 forward의 이름이고, 다른 forward들과 구분될 수 있는 identifier이다. [required]
path Forward 또는 redirect할 resource(*.do, *.jsp 등)의 상대(module-relative or context-relative)경로를 나타낸다. [required]
redirect RequestProcessor가 이 forward에 대해 redirect할 필요가 있을 때, true로 설정한다. Default 값은 false이다.

Samples

다음은 struts-config.xml 파일에서 global-forwards 설정에 대한 예제이다.
<global-forwards>
        <forward name="login" path="/login.jsp"/>
        <forward name="main" path="/main.do" redirect="true" contextRelative="true"/>
</global-forwards>
contextRelative 에 따른 forward 해석
위의 예 중 두 번째 forward 에서, prefix가 "hello"인 sub-application의 forward일 경우 contextRelative 값을 true로 하면, "/main.do"의 path attribute를 "http://localhost:8080/main.do"로 해석한다. contextRelative 값을 false로 하면, "http://localhost:8080/hello/main.do"로 해석한다.

action-mappings Element

<action-mappings>설정
  • 컨트롤러가 요청을 받았을 때 어떤 Action 인스턴스를 실행할 것인가에 대한 설정 정보
  • <action> element를 이용해서 여러 개의 action설정가능
  • action element : 특정 request path를 대응하는 Action 클래스에 매핑
  • forward element : action의 sub-element로 현재 ActionMapping에만 적용되는 지역 ActionForward 설정
  • exception element : action의 sub-element로 현재 ActionMapping에만 적용되는 지역 ExceptionHandler 설정
<action> element의 주요 attribute
  • path : 확장자를 제외한 "/"로 시작하는 경로명
  • type : action클래스의 이름
  • scope : form bean이 저장되어 있는 context의 scope
  • name : action과 연결된 form bean의 name
  • role : Action 객체에 접근할 수 있는 권한을 설정
  • input : form bean에서 validation error가 발생한 경우 되돌아 가거나 상황을 표시할 수 있는 경로

다음은 action element의 attribute들이다.
Name Description
attribute Form bean에 접근하기 위한, request-scope 또는 session-scope attribute의 name 값이다. 사용할 form bean을 다른 attribute의 이름으로 사용하고자 할 때 사용한다. Form bean이 name attribute에 기술되어 있을 때에만 기술될 수 있다.
className Action들의 configuration 정보를 담고 있을 객체이다. Default로 org.apache.struts.config.ActionMapping을 사용하고, 반드시 이를 상속 받은 클래스여야 한다.
forward 요청된 request를 Action 클래스 대신하여 수행할 resource(*.do, *.jsp 등)의 상대(module-relative) 경로를 나타낸다. [required: 반드시 forward, include, type attribute 중의 하나만 기술되어야 한다.]
include 요청된 request를 Action 클래스 대신하여 수행할 resource(*.do, *.jsp 등)의 상대(module-relative) 경로를 나타낸다. [required: 반드시 forward, include, type attribute 중의 하나만 기술되어야 한다.]
input Form bean에서 validation error가 발생했을 때, 이를 나타낼 resource(*.do, *.jsp 등)의 상대(module-relative) 경로를 가리킨다. Form bean이 name attribute에 기술되어 있을 때에만 기술될 수 있다. [required: form bean이 name attribute에 기술되어 있고 validation error들을 리턴할 경우]
name 이 action mapping이 사용하는 form bean의 이름을 나타낸다.
path Submit된 request의 상대(module-relative)경로를 나타낸다. 이 attribute는 반드시 "/"으로 시작해야 하고, filename의 확장자 없이 기술되어야 한다. 예를 들어, "/main.do"은 적절한 path attribute의 기술 방법이 아니다. 왜냐하면 우리는 이미 do라는 확장자가 action mapping에 사용되고 있는 것을 알고 있기 때문에, "/main"이라고만 기술하는 것이 옳다. [required]
parameter Action 객체에 특별한 어떤 값을 넘겨주기 위한 설정 parameter이다. 현 Action 클래스에서는 이 attribute를 이용하지 않고 있기 때문에, 값을 넣는다 해도 처리되지 않는다. 만약 이 attribute를 사용하고자 하면, Action 클래스의 서브클래스를 만들어 구현해야 한다.
prefix Request parameter name을 form bean property name에 매치 시키는 데 사용되는 prefix를 나타낸다. Form bean이 name attribute에 기술되어 있을 때에만 기술될 수 있다.
roles Action 객체에 접근할 수 있는 권한을 설정한다. 여러 role 이름들은 콤마(,)로 구분하여 쓸 수 있다. 예를 들어, "admin,master,user"라고 써주면 admin, master, user의 세 가지 권한을 가진 사람들만이 이 action을 사용할 수 있게 된다.
scope 이 action이 사용하는 form bean이 저장되어 있는 context의 scope를 나타낸다. request 또는 session. Default 값은 session이다.
suffix Request parameter name을 form bean property name에 매치 시키는 데 사용되는 suffix를 나타낸다. Form bean이 name attribute에 기술되어 있을 때에만 기술될 수 있다.
type 요청된 request를 수행할 Action 클래스를 나타낸다. 이 클래스는 org.apache.struts.action.Action의 서브클래스여야 한다. [required: 반드시 forward, include, type attribute 중의 하나만 기술되어야 한다.]
unknown 알려지지 않은 request를 처리하는 default action mapping인지 여부를 나타낸다. 요청된 request를 수행할 action mapping 객체가 없을 경우에, unknown이 true로 설정된 action mapping 객체에게 이 request를 넘겨 처리하게 한다. 각각의 module마다 unknown이 true인 action mapping은 하나만 있을 수 있고, default 값은 false이다.
validate Form bean에서 validation을 수행할지 여부를 나타낸다. 이 값이 true이면, form bean의 validate 메소드가 실행된다. Default 값은 true이다.

Samples

다음은 struts-config.xml 파일에서 action-mappings 설정에 대한 예제이다.
<action-mappings>
	<action path="/hello"
	        type="com.sds.helloapplication.actions.HelloAction"
	        roles="admin,user"
	        name="HelloForm"
	        scope="request"
	        input="/inputHello.jsp">
	  <forward name="success" path="/helloResult.jsp"/>
	  <forward name="summary" path="/jsp/helloSummary.jsp"/>
	  <exception key="error.hello" type="java.lang.Exception" path="/fail.jsp"/>
	</action>
	...
</action-mappings>
/hello.do 의 request에 대해 HelloAction 이 처리토록 매핑되어 있으며 이 때 action에 연결된 form bean은 HelloForm 이다. request scope 동안 form bean 이 유지되며 에러 발생시 되돌아갈 input 페이지는 /inputHello.jsp 이다. admin, user 그룹으로 로그인한 사용자만 해당 action path로 접근 가능하며 forward 경로는 Action 클래스 내의 분기처리에 따라 success, summary로 지시된 페이지로 포워드 하게 된다. exception 발생 시 fail.jsp 로 돌려진다.
action element의 작성은 업무 개발자가 반드시 숙지해야할 부분으로, request의 처리를 담당하는 Action을 매핑하고 페이지 네비게이션을 제어하는 등 웹 어플리케이션 개발의 중요한 작업이다.

controller Element

<controller>설정
  • Struts 1.1 이상의 버전에서 추가되었으며 request를 받은 ActionServlet은 실제 처리를 RequestProcessor에게 위임함
  • 각각의 sub-application에 대한 controller를 다르게 설정하여 모듈별로 분리할 수 있음
  • RequestProcessor을 확장한 DefaultRequestProcessor를 등록

다음은 controller element의 attribute들이다.
Name Description
bufferSize 파일 업로드 시 사용하는 입력 버퍼의 크기. 이 속성은 선택적으로 사용 할 수 있으며 기본값은 4096이다.
className org.apache.struts.config.ControllerConfig의 하위 클래스여야 하며 컨트롤러 정보를 포함한 Config 빈을 구현하는 클래스이다. ControllerConfig 클래스는 값을 지정하지 않은 경우 기본 클래스 이다.
contentType 응답 결과를 보낼 때 사용하는 컨텐트 타입. 이 속성은 선택적으로 사용하며 기본 값은 "text/html"이다. 이 속성에 지정한 값이 있더라도 액션이나 JSP 페이지에서 지정한 컨텐트 타입이 우선한다.
debug 현재 어플리케이션의 디버깅 레벨. 이 속성의 값은 내부적으로 일어나는 이벤트들을 얼마만큼 저장할지를 나타낸다. 값이 클수록 더 많은 로깅 정보들이 축적된다. 이 속성은 선택적이며 기본값은 0으로 로깅 정보를 기록하지 않는다는 의미이다.
forwardPattern /로 시작하는 (contextRelative 속성이 false일 경우) 상대 컨텍스트 경로에 forward 요소의 path 속성이 어떻게 매핑되는지에 대한 대체 패턴. 이 값은 아래 항목으로 구성된다. . $A –하위 어플리케이션의 어플리케이션 접두어에 의한 대체 . $P – 선택한 forward 요소의 path 속성에 의한 대체 . $$ -- URL 에서 $ 표시 그대로 표현됨 . $x (x는 위에 정의되지 않은 다른 표시 ) – 추후 사용을 위해 예약됨 이 속성의 값을 지정하지 않은 경우 기본 forwardPattern은 forwards 행위에 직접 입력한 것과 일치하도록 하는 $A$P 패턴이다.
inputForward action 의 input 파라미터를 최종 URL로 사용할 forward or global-forward 의 이름이길 원하면 true 로 설정한다. false 이면 sub application 의 상대경로로 간주한다.
locale 기본값 false. 사용자의 지역정보를 사용자 세션에 저장할지 여부
maxFileSize 기본값 250M, 파일 업로드 시 파일의 최대 요량으로 K,M,G 단위를 붙여 사용한다.
multipartClass Multipart 요청에 대한 처리를 담당하는 클래스의 전체 이름. 파일 업로드 시 사용. 기본값은 org.apache.struts.upload.DiskMultipartRequestHandler
nocache 기본값은 false, request 의 응답처리에서 HTTP 헤더를 'nocache'로 설정 할 지에 대한 Boolean 값. Optional
pagePattern 커스텀 태그를 사용하는 페이지의 page 속성이 컨텍스트 상대 URL 경로에 매핑 방법에 대한 대체 패턴. 이 속성의 값은 아래 항목들로 구성된다. . $A –하위 어플리케이션의 어플리케이션 접두어에 의한 대체 . $P – 선택한 forward 요소의 path 속성에 의한 대체 . $$ -- URL 에서 $ 표시 그대로 표현됨 . $x (x는 위에 정의되지 않은 다른 표시 ) – 추후 사용을 위해 예약됨 이 속성의 값을 지정하지 않은 경우 기본 pagePattern 은 page 속성의 URL 값과 일치하도록 하는 $A$P 패턴이다.
processorClass 사용자의 요청을 처리할 클래스의 전체 이름. 여기에 지정한 클래스는 org.apache.struts.action.RequestProcessor 클래스의 하위 클래스가 된다. 기본 값은 RequestProcessor 이다.
tempDir 파일 업로드 시 사용할 임시 디렉터리. Optional

Samples

다음은 struts-config.xml 파일에서 controller 설정에 대한 예제이다.
<contoller
	contentType="text/html;charset=euc-kr"
	debug="3" local="true" nocache="true"
	processorClass="anyframe.web.struts.common.action.DefaultRequestProcessor" />

message-resources Element

<message-resources>설정
  • 메시지 리소스 번들과 관련된 사항들을 정의
  • 각각의 struts 설정 파일에 하나 이상 지정 가능(두 번째 메시지 리소스부터는 key를 지정해야 함)
forward 의 우선순위
<forward>은 전역(global) level과 action level 에서 정의될 수 있는데 action level 에서 선언된 것이 더 우선순위가 높다.
다음은 message-resources element의 attribute들이다.
Name Description
className message-resources의 정보를 포함하는 설정 빈을 구현하는 클래스 이름. 여기에 지정한 클래스는 org.apache.struts.config.MessageResourcesConfig 클래스의 하위 클래스여야 한다. 기본 클래스는 MessageResourcesConfig 이다. Optional.
factory 사용할 MessageResourcesFactory 클래스의 전체 클래스 이름. org.apache.struts.util.PropertyMessageResources 가 기본 클래스 이다.
key 메시지 리소스 번들이 저장될 서블릿 컨텍스트 속성. 이 속성은 optional. 기본 값은 Action.MESSAGES_KEY 에 의해 지정된다. 기본 번들로 리소스 번들 하나만 지정된다.
null 정의되지 않은 메시지 키가 사용된 경우 이를 MessageResources 의 하위 클래스에서 어떻게 처리할지 나타내는 Boolean 값. true 로 설정하면 빈 문자열을 돌려준다. false로 설정하면 "global.label.missing" 과 같은 문자열을 되돌려준다. 기본값은 true.
parameter 리소스 번들의 이름. 예를 들어, 리소스 번들 이름이 ApplicationResources.properties 이면 이 속성의 값은 ApplicationResources가 된다. 이 속성은 반드시 정의해야 한다. 만일 리소스 번들이 패키지화되어 있다면 해당 패키지의 이름을 포함한 전체 이름을 지정해야 한다.

Samples

다음은 struts-config.xml 파일에서 message-resources 설정에 대한 예제이다.
<message-resources  parameter="struts.webapp.example.ApplicationResources"/>
<message-resources 
    parameter="struts.webapp.example.AlternateApplicationResources"
    key="alternate">
</message-resources>

plug-in Element

<plug-in>설정
  • Struts1.1 버전에서 추가한 것으로 Struts Application 이 구동 시에 동적인 자원을 처리하게 해주는 강력한 기능임
  • org.apache.struts.action.PlugIn 인터페이스를 구현하는 자바 클래스를 생성한 후 설정파일에 plug-in 요소를 추가하여 사용 가능
  • plug-in 에 대한 예 : validator, tiles 등

다음은 plug-in element의 attribute이다.
Name Description
className Plug-In 클래스의 전체 이름을 나타내며, 해당 클래스는 반드시 Plug-In인터페이스를 구현해야 한다.

Samples

다음은 struts-config.xml 파일에서 plug-in 설정에 대한 예제이다.
<plug-in
	className="org.apache.struts.validator.ValidatorPlugIn">
	<set-property
		property="pathnames"
		value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

Resources