@ 액션 클래스 만드는 3가지 방법
- POJO 형태로
- Action 인터페이스를 구현하여 작성
- ActionSupport 클래스를 확장하여 작성
@ 액션 클래스는 스트럿츠2가 액션을 실행하기 위한 엔트리 포인트로써 기본 액션 메소드가 묵시적으로 execute()로 지정되어 있다. execute()메소드의 리턴 값인 문자열은 액션 실행이 끝난 후에 어떤 리절트를 실행할지 결정하기 위해 사용된다. (리절트 코드)
package happy.ch02.example01;
public class HelloWorld {
private String message;
public String getMessage(){
return message;
}
public String execute() throws Exception{
this.message = "Hello, World!";//비즈니스 로직
return "success";//리절트 코드
}
}
public class HelloWorld {
private String message;
public String getMessage(){
return message;
}
public String execute() throws Exception{
this.message = "Hello, World!";//비즈니스 로직
return "success";//리절트 코드
}
}
@ struts.xml 파일에 액션을 설정해줌
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example01" extends="struts-default">
<action name="HelloWorld" class="happy.ch02.example01.HelloWorld">
<result name="success">/helloWorld.jsp</result>
</action>
</package>
</struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example01" extends="struts-default">
<action name="HelloWorld" class="happy.ch02.example01.HelloWorld">
<result name="success">/helloWorld.jsp</result>
</action>
</package>
</struts>
- <package>요소를 사용하여 액션, 리절트, 인터셉터에 대한 설정을 패키지 단위로 묶는다. extends="struts-default"의 의미는 struts2-core-2.0.14.jar파일에 struts-default.xml파일을 상속받는다는 의미다. 스트럿츠의 모든 패키지는 이 디폴트 struts-default.xml를 상속하여 작성하는 것을 원칙으로 함
- <action>에서 name="HelloWorld"은 HelloWorld.action의 호출을 여기서 찾아 class속성에서 정의된 인스턴스를 만들어 execute()메서드를 실행한다. 그리고 <result>에 정의된 name과 매칭되는 페이지를 결과로 처리한다.
@ ${message}를 jsp페이지에 삽입한다. 이것은 EL(Expression Language:표현 언어)로써 액션에서 설정한 message 속성 값을 얻어오는 역할을 한다. 일반적으로 JSP로 나타내면 <%=request.getAttribute("message")%>와 같이 표현할 수 있다. ${message}는 자바 빈즈의 원리에 의해서 getter인 getMessage()를 호출한 것이다.