반응형
action-mappings
<action-mappings>설정
- 컨트롤러가 요청을 받았을 때 어떤 Action 인스턴스를 실행할 것인가에 대한 설정 정보
- <action-mappings>하위에 <action>을 이용해서 여러 개의 action 설정 가능
- <action> : 특정 request URI와 대응하는 Action 매핑 정의
<action>의 주요 attribute
- path : 확장자를 제외한 "/"로 시작하는 경로명
- type : action클래스의 이름
- scope : form bean이 저장되어 있는 context의 scope
- name : action과 연결된 form bean의 name
- role : Action 객체에 접근할 수 있는 권한을 설정
- input : form bean에서 validation error가 발생한 경우 되돌아 가거나 상황을 표시할 수 있는 경로
다음은 <action>의 attribute들이다.
Name | Description |
attribute | Form bean에 접근하기 위한, request-scope 또는 session-scope attribute의 name 값이다. 사용할 form bean을 다른 attribute의 이름으로 사용하고자 할 때 사용한다. Form bean이 name attribute에 기술되어 있을 때에만 기술될 수 있다. |
className | Action들의 configuration 정보를 담고 있을 객체이다. 반드시 org.apache.struts.config.ActionMapping 또는 이를 상속 받은 클래스여야 한다. 디폴트 값 : 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 매핑 사용하는 form bean의 이름을 나타낸다. |
path | Submit된 request의 상대(module-relative)경로를 나타낸다. 이 attribute는 반드시 "/"으로 시작해야 하고, filename의 확장자 없이 기술되어야 한다. 예를 들어, "/main.do"은 적절한 path attribute의 기술 방법이 아니다. 왜냐하면 이미 do라는 확장자가 action 매핑에 사용되고 있는 것을 알고 있기 때문에, "/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. 디폴트 값 : 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 매핑인지 여부를 나타낸다. 요청된 request를 수행할 action 매핑 객체가 없을 경우에, unknown이 true로 설정된 action 매핑 객체에게 이 request를 넘겨 처리하게 한다. 각각의 module마다 unknown이 true인 action 매핑은 하나만 있을 수 있다. 디폴트 값 : false |
validate | Form bean에서 validation을 수행할지 여부를 나타낸다. 이 값이 true이면, form bean의 validate 메소드가 실행된다. 디폴트 값 : true |
cancellable | Struts 1.3에 추가된 attribute로 Struts 1.2.9에서 <set-property>로 설정했던 것이 1.3부터 바뀌었다. Cancel Process를 사용하기 위해서 설정해야 한다. |
Samples
다음은 struts-config-login.xml 파일에서 action-mappings 설정에 대한 예제이다.<action-mappings> <action path="/login" type="anyframe.sample.struts.web.action.LoginAction" name="userForm" scope="request" input="/basic/login.jsp"> <exception key="error.password.mismatch" path="/basic/login.jsp" type="javax.security.auth.login.FailedLoginException" /> <forward name="success" path="/basic/main.jsp" /> </action> ... </action-mappings>
<action>의 작성은 개발자가 반드시 숙지해야할 부분으로, request의 처리를 담당하는 Action을 매핑하고 페이지 네비게이션을 제어하는 등 웹 어플리케이션 개발의 중요한 작업이다.
global-forwards
<global-forwards> 설정
- 실제 forward 또는 redirect 할 수 있는 URI를 논리적인 이름으로 맵핑
- <global-forwards>하위에 <forward>를 이용해서 여러 개의 URI 매핑 설정
- 하나의 <forward>는 하나의 논리적인 이름을 module-relative 또는 context-relative URI 경로로 매핑함 (URI 경로를 직접 사용하는 것 보다 logic 내부적으로 정해진 이름을 사용함으로써, view로부터 controller와 model을 분리)
- 모든 action에서 사용할 수 있는 global level의 forward를 정의
forward 의 우선순위
<forward>은 전역(global) level과 action level 에서 정의될 수 있는데 action level 에서 선언된 것이 더 우선순위가 높다.다음은 <forward>의 attribute들이다.
Name | Description |
className | Forward들의 configuration 정보를 담고 있을 객체이다. org.apache.struts.config.ActionForward 또는 이를 상속 받은 클래스여야 한다. 디폴트 값 : org.apache.struts.config.ActionForward |
name | 현재 forward의 이름이고, 다른 forward들과 구분될 수 있는 identifier이다. [required] |
path | Forward 또는 redirect할 resource(*.do, *.jsp 등)의 상대(module-relative or context-relative)경로를 나타낸다. [required] |
redirect | RequestProcessor가 이 forward에 대해 redirect할 필요가 있을 때, true로 설정한다. 디폴트 값 : false |
Samples
다음은 struts-config.xml 파일에서 global-forwards 설정에 대한 예제이다.<global-forwards> <forward name="login" path="/login.jsp"/> <forward name="main" path="/main.do" redirect="true"/> </global-forwards>