@ <include>요소는 struts.xml설정 파일에 필요한 요소들을 서로 다른 파일에 분리해서 작성한 후 이를 통합하도록 하는 기능이다.
<include file="struts-03.xml"/>
<include file="testDir/struts-04.xml"/> -- 특정위치에 있는 경우 폴더 위치 명시

@ struts.xml파일들은 struts2-core-2.0.x.jar 안에 있는 sturts-default.xml을 묵시적으로 include한 상태이며 명서적으로 인클루드해도 다른 차이는 없다.(자바의 모든 클래스가 묵시적으로 Object클래스를 상속받듯이)

@ <package>요소는 액션, 리절트, 인터셉터에 대한 설정을 패키지 단위로 묶는 작업을 한다.
 속성  필수   설명 
 name  필수  패키지를 구분하기 위한 이름을 설정하는 속성, 중복되어서는 안됨, 상속관계에서 사용됨
 extends  선택  다른 패키지의 환경 설정을 그대로 상속받아 사용하고자 할때 그 패키지의 이름을 속성값으로
 namespace  선택  액션의 URL경로를 지정할 때 컨텍스트 패스와 액션 이름 사이에 중간 경로를 지정하기 위한 속성
 abstract  선택  추상 패키지를 만들기 위한 속성으로 true이면 액션설정없이 다른 패키지에서 상속하는 용도로 쓰인다.

@ namespace 가 아래와 같이설정되어 있으면 "context path"/tutorial06/HelloWorld.action 로 url 호출이 이뤄진다. 즉 tutorial06에서 HelloWorld.action을 찾게 됨
<package name="tutorial06" namespace="/tutorial06" extends="struts-default">
  <action name="HelloWorld" class="tutorial.HelloWorld">
   <result name="success">/helloWorld.jsp</result>
  </action>
 </package>

@ 디폴트 네임스페이스 : namespace="" 이거나 namespace를 생략하면 그 패키지는 디폴트 네임스페이스가 된다. 존재하지 않는 네임스페이스에서 액션을 호출하면 디폴트 패키지에 지정한 액션이 실행(이때 호출된 액션명은 서로 같아야한다!)

@ 루트 네임스페이스 : 컨텍스트 패스 바로 아래에 위치한 액션을 설정 namespace="/" , 루트 네임스페이스에서 액션을 찾지 못하면 역시 디폴트 네임스페이스에서 액션을 찾는다.

@ abstract 속성 : 액션이 없는 abstract 속성을 true로 지정하지 않으면 이 패키지를 상속할 때 에러가 발생한다. 액션이 없으면 반드시 속성을 true로 설정해야한다.

@ <action> :
- url과 액션 클래스를 매핑한다.
- 액션 수행 전 후로 실행할 인터셉터를 설정한다.
- 액션 수행 결과에 따른 리절트를 설정한다.
- 액션 수행 시 예외가 발생할 경우 예외에 따른 리절트를 설정한다.

@<action>의 method 속성은 옵션으로 액션이 인스턴스화 되자마자 호출할 메소드를 지정한다. 이러한 메소드를 액션 메소드라고 한다. 값을 지정하지 않으면 기본적으로 액션 메소드를 execute()로 인식한다.

@ 디폴트 액션 : 요청한 액션이 존재하지 않을 경우 500에러가 발생, 이런 에러를 처리하기 위한 액션이 디폴트 액션(default-action-ref )
<default-action-ref name="DefaultAction"/>
  <action name="DefaultAction" class="tutorial.DefaultAction">
   <result name="success">/helloWorld.jsp</result>
  </action>
 
@ 와일드 카드 매핑 : action수가 많아짐에 따라 이를 일일이 정의하기 보다는 와일드 카드를 사용하여 간단히 정의할 수 있다. 와일드 카드 사이에 구분자는 공백도 되고 문자가 와도 된다.(!,+등 왠만한 특수문자도 가능)

<action name="HelloWorld*" class="tutorial.HelloWorld{1}">
   <result name="success">/helloWorld.jsp</result>
  </action>
  <action name="*+*" class="tutorial.{1}" method="{2}">
   <result name="success">/helloWorld.jsp</result>
  </action>

@ <constant> : 스트럿츠2는 사용자가 필요한 프레임 워크의 기능을 적합하게 변경하기 위해 다양한 프로퍼티를 갖는데 이는 상수 형태로 정의된다. name과 value의 두 필수 속성으로 구성됨
<constant name="struts.devMode" value="true"/>

@ 위에서 언급한 <constant> 요소 말고 web.xml에도 설정할 수 있다.
<filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  <init-param>
   <param-name>struts.i18n.encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>

@ 또는 sturts.properties 파일에서도 설정할 수 있다. 아래에 속성에서 action대신 다른 값으로 액션호출의 확장자를 바꿔줄 수 있다. struts2-core-2.0.x.jar 안에 있는 default.properties파일을 가져와서  sturts.properties로 이름을 바꿔 사용하면 됨 
struts.action.extension=action
Posted by Taoist
,