■ Action 인터페이스를 구현한 액션
-. Action 인터페이스를 구현한 액션에서 execute( ) 메소드를 반드시 구현해야 한다.
그 이유는 Action 인터페이스에 execute( ) 메소드가 추상 메소드로 정의되어 있기 때문이다.
-. 스트럿츠 2에서는 액션 클래스가 인스턴스화되면서 자동 호출되는 기본 액션 메소드를 execute( ) 메소드로 정해 놓았다.
Action 인터페이스를 구현한 액션 클래스 |
package action; import com.opensymphony.xwork2.Action; public class HelloWorld02 implements Action { @Override public String execute( ) throws Exception { return SUCCESS; // SUCCESS는 Action 인터페이스에 정의된 리턴코드를 사용한 것이다. } } |
-. Action 인터페이스의 execute( ) 메소드를 오버라이딩한 것이므로 메소드의 원형이 동일하다.
-. execute( ) 메소드는 API document의 Action 인터페이스에서 살펴본 execute( )처럼 아큐먼트는 없고 리턴형이 String으로 되어 있다.
-. Action 인터페이스를 구현한 액션 클래스가 POJO로 구현한 HelloWorld와 다른 점은 execute( ) 메소드의 리턴 값이
'success'에서 SUCCESS로 바뀌었다는 것이다.
-. 액션 메소드가 반환하는 문자열은 액션 실행이 끝난 후 어떤 리절트를 실행할지 결정하기 위해 사용되는 것을 리절트 코드라 한다.
-. API document를 살펴보면 Action 인터페이스에 몇 가지 공통적으로 사용되는 리절트 코드(ERROR, INPUT, LOGIN, NONE, SUCCESS)가
상수로 정의되어 있을을 살펴볼 수 있다.
리턴 코드 |
설 명 |
ERROR |
-. 액션 실행에 실패하여 에러 페이지로 돌아간다. |
INPUT |
-. 입력 값이 부족하거나 문제가 있어 입력 페이지로 돌아간다. |
LOGIN |
-. 로그인을 하지 않아서 액션을 실행할 수 없으므로 로그인 페이지로 돌아간다. |
NONE |
-. 액션이 성공적으로 실행은 되었지만 화면을 보여주지 않는다. |
SUCCESS |
-. 액션이 성공적으로 실행되어 결과 화면을 사용자에게 보여준다. |
web.xml |
<?xml version="1.0" encoding="UTF-8"?> xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> |
HelloWorld02.java |
package action; import com.opensymphony.xwork2.Action; public class HelloWorld02 implements Action { // HelloWorld02 액션에서도 HelloWorld 액션에서와 마찬가지로 // set / get 메소드를 갖는 필드를 추가할 수 있다. // 스트럿츠 2의 액션은 자바 빈의 규칙을 따르기 때문에 필드에 대한 직접 접근하지 못하도록 // private 멤버로 지정하고, 이를 public 멤버로 선언된 메소드를 사용하도록 한다. private String message; private String name = "Angel"; // message 필드는 getter만 존재하므로 이 값을 외부에서 사용하기만 하고 변경하지 못하는 // read only 프로퍼티가 된다. public String getMessage() { return message; } // 반면 name 필드는 외부에서 사용하기만 하고 변경하지는 못하도록 하기 위해서 setter만 정의해 둔다. public void setName(String name) { this.name = name; } @Override public String execute() throws Exception { this.message = "Hello, " + name + "!"; return SUCCESS; } } |
struts.xml |
<?xml version="1.0" encoding="UTF-8"?> |
helloWorld.jsp |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>결과를 위한 JSP 페이지</title> </head> <body> <h1> ${message} </h1> </body> </html> |
출력화면 : http://localhost:8181/Chapter04/HelloWorld02.action |
'Struts > Struts Programming' 카테고리의 다른 글
[Struts] 도메인 오브젝트 (0) | 2012.09.03 |
---|---|
[Struts] ActionSupport 클래스를 확장한 액션 (1) | 2012.09.03 |
[Struts] 스트럿츠 흐름과 파라미터 값 전달하기 (2) | 2012.09.03 |
[Struts] 액션 종류와 POJO 기반 액션 (0) | 2012.09.03 |
[Struts] 스트럿츠 2의 특징 (0) | 2012.08.31 |