반응형

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>
'/login.do' 의 request에 대해 LoginAction 이 처리하도록 매핑되어 있으며, 이 때 action에 연결된 form bean은 UserForm 이다. request scope 동안 form bean 이 유지되며 forward 경로는 Action클래스에서 "success"라는 이름으로 forward name을 세팅 했기 때문에 /basic/main.jsp로 forwarding한다. exception 발생 시 /basic/login.jsp로 돌려진다.

<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>
Posted by 1010