2012-10-25 2 views
3

ActionContext 및 ActionInvocation과 관련하여 약간의 혼란이 있습니다. Action Context는 Action이 실행되는 컨텍스트임을 압니다. ActionInvocation은 Session, Value Stack 등의 ActionContext 내에 있습니까? 둘째, 스레드마다 고유하므로 모든 사용자 요청에서 ActionContext를 작성합니까? 그렇다면 모든 사용자 요청에 대해 새로운 액션 컨텍스트를 만들 때마다 비용이 많이 듭니까?actioncontext와 actionInvocation struts2의 차이점은 무엇입니까?

답변

1

액션이 실행되는 컨텍스트로 생각하면 ActionContext이므로 액션을 실행하려면 Invocation이 필요합니다. 그것은 ActionContext에의 일부가 그리고 당신이

public ActionInvocation getActionInvocation() 

컨텍스트에 의해 맥락에서 ActionInvocation을 얻을 수있는 모든 방법을 가지고는 ActionContext에 저장된 값은 스레드 당 고유 즉, ThreadLocals을 사용합니다. 글쎄, 나에게 이것은 다중 오버 헤드 응용 프로그램에서 액세스되는 모든 것이 Thread safe.a 인 지 확인해야하는 경우와 같이 오버 헤드가되지 않는다. 각 요청마다 새로운 ActionContext이 생성 될 것이다. 스트럿 2 ActionContex 및 액션 호출

ActionContext에 사이

1

차이 동작이 실행되는 오브젝트의 용기이다. ActionContext에 저장된 값은 스레드마다 고유합니다 (즉, ThreadLocal). 따라서 우리는 액션 스레드를 안전하게 만들 필요가 없습니다.

ActionContext 클래스의 getContext() 메서드를 호출하여 ActionContext 참조를 가져올 수 있습니다. 이것은 정적 팩토리 메소드입니다. 예 : ActionContext context = ActionContext.getContext();

액션 Invocatioin -

ActionInvocation는 작업의 실행 상태를 나타낸다. 액션과 인터셉터 객체를 가지고 있습니다.

struts 프레임 워크는 ActionInvocation 인터페이스를 제공하여 ActionInvocation을 처리합니다.

1) 공공 ActionContext에을 : 그것은 그들 중 일부는 등 일반적으로 다음과 같이 ActionInvocation 인터페이스의 방법이 사용 ActionInvocation 인터페이스 의 방법 결과, ValueStack,는 ActionProxy, ActionContext에의 인스턴스를 얻을하는 데 사용할 수있는 많은 방법을 제공 getInvocationContext()는 ActionInvocation과 연관된 ActionContext 객체를 반환합니다.

2) public ActionProxy getProxy()이 ActionInvocation을 포함하는 ActionProxy 인스턴스를 반환합니다.

3) public ValueStack getStack() ValueStack의 인스턴스를 반환합니다.

4) public Action getAction()이 ActionInvocation과 연결된 Action의 인스턴스를 반환합니다.

5) public void invoke()는이 ActionInvocation을 처리 할 때 다음 자원을 호출합니다.

6) public Result getResult()는 Result의 인스턴스를 반환합니다.