티스토리 툴바



먼저 POJO란 무엇일까 ? 풀네임은 Plain Old Java Object이다

POJO객체는 일반적인 자바 객체를 뜻한다 스트럿츠2에서 POJO으로 액션을 구현한다면 어떠한 컨테이너에도 종속적이지않게 된다 즉 이말은 특정 클래스를 상속 받아야 한다든지 하는 제약이 없다는것이다

public class HelloWorld extends Action <----스트럿츠1 방식
execute() 

public class HelloWorld <---POJO기반 스트럿츠2방식
execute()

상속(종속)안받아도 액션으로 사용할수 있다라는것이다

액션은 단순 POJO입니다. execute() 메서드를 가진 어떠한 자바 클래스라도 액션 클래스로서 사용될 수 있습니다. 심지어 항상 인터페이스를 구현할 필요도 없습니다. 액션 클래스를 개발하는 동안 Inversion of Control이 도입됩니다. 이것은 액션을 근원적인 프레임워크에 중립적이게 합니다.

<Action 인터페이스를 알아보자>

package com.opensymphony.xwork2;
public interface Action {
//The action execution was a failure.
public final static String ERROR;
//The action execution require more input in order to succeed
public final static String INPUT;
//The action could not execute, since the user most was not logged in
public final static String LOGIN;
// The action execution was successful but do not show a view.
public final static String NONE;
//The action execution was successful.
public final static String SUCCESS;
	//the logic of the action is implemented
	public String execute() throws Exception;
}
액션 인터페이스를 구현하는건 자기가원하면 구현하면된다 만약 액션을 구현없이 execute() 를 찾기위해 리플렉션을 사용한다
그게 POJO방식이다 만약 설정파일에 기술된 execute()없다면 프레임워크는 예외를 발생시킨다

그럼 POJO방식의 코딩을 한다면 이렇게될것이다

public class NewAction {
public String execute() throws Exception {
// do the work
return "success";
}
}

리턴은 success 인자로 리턴한다 이걸 헬퍼인터페이스(또는 상태값)라고한다
헬퍼 인터페이스(상태값)는 "SUCCESS" , "NONE", "ERROR","INPUT","LOGIN"과 같은 상수로서 공통적인 결과를 제공한다
그리고 이 상수들은 반드시!!! execute() 메소드를 재정의해야한다

자 이제 마지막으로 정리를 해보면

POJO으로 작업을하면 의존성이 없어 테스트와 같은 독립적인 작업을 하는데좋다
하지만 ActionSupport를 상속받아서 작업을한다면 독립적인 테스트 작업을할수 있는 POJO보다 편리함은 떨어지겠지만!!!
Struts2환경에서 제공되는 몇 가지 이점을 그대로 누릴 수있다는 점이좋다



저작자 표시
Posted by yokms2000