Chapter 12. 다른 형태의 Action
12-1. ForwardAction
- 단순히 특정 페이지로 포워드하는 일만 수행하는 ForwardAction
- <action>요소의 parameter 속성으로 지정된 페이지로 포워드
- ForwardAction을 이용하지 않고, <action>요소의 forward 속성을 이용하는 방법도 있음
12-2. IncludeAction
- ForwardAction과 동일한 결과
- 지정된 JSP를 수행하고 컨트롤이 RequestProcessor로 돌아오느냐 아니냐?의 차이
- Request Processor가 해야할 모든 작업을 마친 후 수행한다는 점은 동일
- <action> 요소의 include 속성을 이용해도 동일한 결과
12-3. LocaleAction
- 사용자의 로케일은 웹 브라우저에 의해 HTTP Header에 담겨 전송되는 Accept-Language의 값에 따라 자동으로 판별된다.
- 사용자의 로케일 정보는 Globals.LOCALE_KEY 이름으로 세션에 저장되어 재사용됨.
1) controller 요소의 locale 속성을 "false" 로 설정하면 요청이 있을 때마다 검사하도록 할 수 있음.
2) 세션에 저장된 로케일을 변경하고자 할 때 LocaleAction 사용 - "language", "country"값에 따라 로케일 생성
3) 프로그램상에서 명시적으로 새로운 로케일 생성 후 Globals.LOCALE_KEY 의 이름으로 세션에 저장
12-4. DispatchAction
- 하나의 서비스에 관련된 여러 개의 작은 Action들을 하나의 클래스에 모으는 것.
- struts-config.xml 파일의 action 요소에 메서드를 선택할 때 사용할 요청 파라미터의 이름을 parameter 속성을 통해 지정
- execute() 호출하면 DispatchAction 의 설정에서 parameter 속성으로 지정된 요청 파라미터의 값을 확인하여 동일한 이름의 메서드를 찾아 호출
12-5. LookupDispatchAction
- DispatchAction 의 서브클래스로 하는 일이 유사.
- 파라미터의 값을 리소스 번들에서 검색하여 리소스 번들의 키를 검색한 후, 검색된 키에 매핑된 메서드를 호출
- getKyeMethodMap() 메소드를 구현해야 한다 : 리소스 번들의 키와 메서드 명을 매핑한 java.util.Map을 반환하는 메소드.
- struts-config.xml 파일의 message-resources 요소에 해당 키로 정의된 값이 있어야 함
- 리소스 번들을 검색할 때 사용되는 요청 파라미터의 이름을 parameter 속성을 통해 지정
12-6. MappingDispatchAction
- DispatchAction 의 서브클래스로 하는 일이 유사하나 메소드별로 각각 서로 다른 ActionMapping을 선언한다는 차이
- 매소드의 선택이 action 요청의 parameter 속성에 의해 결정
12-7. SwitchAction
- 현재 작업 중인 모듈에서 다른 모듈로 모듈을 전환하고, 새로운 모듈 내의 URI로 포워드한다.
prefix : 전환해야 하는 모듈명
page : 전환 후 포워드할 상대 URI
Chapter 13. 다른 형태의 Action Form
13-1. DynaActionForm
- 수많은 속성과 각 속성의 getter/setter 메서드들을 일일이 코딩한 클래스가 필요하지 않음.
- struts-config.xml 파일에 속성들과 타입을 선언하면 실행시에 속성들과 getter/setter 메소드들이 동적으로 생성됨.
--> java.util.Map을 통해 속성의 정의되고 java.util.Map에 접근할 수 있는 get/set 메서드를 제공
- form-bean 요소에 등록할 때 form-property라는 하위 요소를 포함해야 함 (initial 속성을 지정 - 안 하면 숫자는 0, 객체는 null)
- validate() 메소드는 DynaActionForm에서 기본 검증을 수행 안하므로, validate()를 재정의해야만 함
13-2. Map-backed ActionForm
- ActionForm에 전달될 요청 파라미터를 예측할 수 없는 경우에 사용
- ActionForm 의 속성을 Map으로 선언한 후, 실행 시 동적으로 생성된 파라미터를 담도록 할 수 있다.
13-3. List-backed ActionForm
- Map-backed ActionForm 과 유사
- Map 대신 List 를 사용, String 형태의 key 대신 int 형식의 index를 사용
- "value"라는 이름의 요청 파라미터만 처리 : 길이를 알 수 없는 배열형일 때 유용 |