Struts 2 Architecture 1 Action Family Action Mapper


![■ 중요 소스 구조(1) Action. Family [Action. Mapper, Action. Proxy, Action. Invocation, Action. Context] ■ 중요 소스 구조(1) Action. Family [Action. Mapper, Action. Proxy, Action. Invocation, Action. Context]](https://slidetodoc.com/presentation_image_h/1aef962b3dadca891bb34c7450cbbfae/image-3.jpg)



![■ Action. Mapper (2) 실습(p. 185~p. 194) (1. )메소드 접두어 [method: default] <s: submit ■ Action. Mapper (2) 실습(p. 185~p. 194) (1. )메소드 접두어 [method: default] <s: submit](https://slidetodoc.com/presentation_image_h/1aef962b3dadca891bb34c7450cbbfae/image-7.jpg)
![■ Action. Mapper (3) (2. )액션 접두어 [action: dashboard] <s: submit name="action: method. Prefix ■ Action. Mapper (3) (2. )액션 접두어 [action: dashboard] <s: submit name="action: method. Prefix](https://slidetodoc.com/presentation_image_h/1aef962b3dadca891bb34c7450cbbfae/image-8.jpg)











- Slides: 19
# Struts 2 Architecture
■ 중요 소스 구조(1) Action. Family [Action. Mapper, Action. Proxy, Action. Invocation, Action. Context] Action*. java 형태 Action. Proxy. java, Action. Invocation. java. . 등 Default. Action*. java형태 (기본구현체)
■ 중요 소스 구조(2) struts 2 -core-2. 0. 12. jar xwork-2. 0. 6. jar
■ Filter. Dispatcher web. xml에 정의됨 Action. Mapper : Action의 invoke가 필요한지 파악함 Action. Proxy : Action의 invoke가 필요한 경우, 제어권 반 환 소스 : Filter. Dispatcher. java (TW설명) public class Filter. Dispatcher implements Struts. Statics, Filter{}
■ Action. Mapper (1) P. 182, get. Mapping() 메소드 호출방식(설명) 액션 매핑 생성 Default. Action. Mapper. java public class Default. Action. Mapper implements Action. Mapper {} P. 184 메소드 접두어, 액션 접두어 리다이렉트 접두어, 리다이렉트-액션접두어 Default. Action. Mapper. java 에서 선언됨(설명)
■ Action. Mapper (2) 실습(p. 185~p. 194) (1. )메소드 접두어 [method: default] <s: submit name="method: cancel" value="Cancel"/> 예제클릭 다른 방법 (struts. xml 수정) <action name=“test” class=“. . /” method=“cancel”> 예제클릭
■ Action. Mapper (3) (2. )액션 접두어 [action: dashboard] <s: submit name="action: method. Prefix 3" value=“gogo. Thing"/> 예제실행 (3. ) 리다이렉트 접두어[redirect: cancel. jsp] <s: submit name="redirect: http: //www. ahnlab. com" value="Ahnlab. com"/> 예제실행 (4. ) 리다이렉트-액션 접두어 [redirect-action: cancel] <s: submit name="redirect-action: method. Test" value="Ahnlab. com"/>
■ Action. Mapper (4) 커스텀 액션 매퍼 레스트풀 액션 매퍼 Restful. Action. Mapper. java http: //host/article/Id ->set. Article. Id()메소드 필요 레프스풀2 액션매퍼 Restful. Action. Mapper 2. java param_name/param_value형식으로 파라미터는 액션이름 추출 혼합 액션 매퍼
■ Action. Proxy / Action. Invocation 두 항목은 짝을 이루어 구성됨 Action. Invocation. java UML로 구조파악 (Action. Invocation 1. ucd) Action. Proxy : Action. Invocation을 가짐 Action. Invocation : 액션인스턴스, 인터셉트 순서, 리절트맵, 액션Contex를 가짐 P. 172 service. Action() 연관관계 (설명) Action. Proxy가 생성되는 과정
■ Action. Invocation P. 175 (그림참조) Default. Action. Invocation. java public class Default. Action. Invocation implements Action. Invocation {} invoke() 메소드 (설명)
■ Action. Context(1) 쓰레드 로컬 맵(정의된값, 저장) 세션맵, 액션인보케이션, 요청파라미더. 등 Action. Invocation실행되는 동안 쓰레드로 구성됨 P. 180 최초 Actionproxy에 설정 Default. Action. Proxy. Factory. java{ create. Action. Proxy (){ Action. Proxy proxy = new Default. Action. Proxy( ) } }
■ Interceptors 액션 전, 후의 호출을 가로채는 객체 (spring의 AOP와 비슷한 역할) com. opensymphony. xwork 2. interceptor. Interceptor. java 위 Interface를 구현해서 만든다. void init(); void destory(); String intercept(Action. Invocation invocation) Abstract. Interceptor. java를 구현한 추상클래스 init(), destory(); -> 초기화가 많이 필요없음
■ Interceptors (사용자 구현) 사용자가 구현한 Interceptor 예제실행 중요 소스 public class Timer. Interceptor extends Abstract. Interceptor {} String result = invocation. invoke(); <interceptors> <interceptor name="timerer" class="exam. chapter 4. Timer. Interceptor" /> </interceptors> <action name="go. Method. Prefix. Page"> <interceptor-ref name="timerer" /> <interceptor-ref name="logger" /> <result>/WEB-INF/jsp/chapter 4/method. Prefix. jsp</result> </action>
■ Interceptors(default) struts-default. xml 앨리어스 <param name="aliases"> #{'name': 'p. Name', 'model. No': 'p. No'}</param> <interceptor-ref name="alias" /> com. opensymphony. xwork 2. interceptor. Alias. Interceptor. java 체인 value. Stack을 복사하여, 다른 Action에서 사용함 com. opensymphony. xwork 2. interceptor. Chaining. Interceptor. java 프리페어 Preparable인터페이스 구현 -> prepare()메소드 호출 com. opensymphony. xwork 2. interceptor. Prepare. Interceptor. java 예제클릭
■ Interceptors(default) 기능별 분류 유틸리티 (timer, logger) 프로퍼티 (params, chain 등등) 위크플로우 (workflow, validation 등등) Filter 와의 차이점 서블릿 컨테이너에 묶이는 여부 Interceptor : action 마다 생성됨