doc-ver.0.1

1. 서론
 Struts2 프레임워크는, JavaEE 기반의 웹어플리케이션 개발 시에, Model 2 기반의 개발을 쉽게 할 수 있도록 MVC 패턴의 적용을 도와주는 프레임워크이다. 실상 MVC 패턴 적용이라고 하기는 하기만, Struts2 는, View 와 Controller 정도의 분리를 돕는데 주된 기능을 한다.

 자세한건 시간나는대로 문서를 업데이트 해가며 내용을 추가 해 보겠다.

2. Hello Struts2 해보기
 가. 두가지 방식의 Configuration

  Struts2 는 XML 방식, Java SDK 1.5 이상에서 지원하는 Annotation 방식 의 두가지 방식을 통하여 Configuration 을 가능하게 한다. 개념적으로, 아래 그림처럼 가능하다는 얘기이다.


   XML 방식에서 사용되는 XML 예제는 아래와 같다.
<action name="Login" class="manning.Login">    <result>/AccountPage.jsp</result>    <result name="input">/Login.jsp</result></action><action name="Registration" >    <result>/Registration.jsp</result></action><action name="Register" class="manning.Register">    <result>/RegistrationSuccess.jsp</result>    <result name="input">/Registration.jsp</result></action>

   Annotation 방식의 예제 코드는 아래와 같다.
@Results({    @Result(name="input", value="/RegistrationSuccess.jsp" )    @Result(value="/RegistrationSuccess.jsp" )})public class Login implements Action {    public String execute() {        //Business logic for login    }}

 위 예제에 대한 설명은 이후에 자세히 설명하도록 하고, 지금은, XML 과 Annotation 방식으로 Struts2 의 설정이 가능하다는 것만 알고 넘어가자. 어떤것을 쓸것인가는 개발하기 나름이다. 그러나 Struts2 개발진은 Zero-Configuration 을 지향하고 있다. 무수히 많아지는 XML 파일을 관리하기가 너무 번거롭기 때문이다.

 Annotation 방식으로 가게 되면, 한가지 전제가 따라야 할 듯 하다. 바로, 패키지 및 액션명의 네이밍 룰 정의가 일관되고 견고해야 하며, 모두들 이를 확실히 지켜야 한다는 점 이겠다. 만약 액션명에서 패키지명을 유추하기 힘들거나, 반대로, 패키지명에서 액션명을 유추하기 힘들다면, 가독성과 유지보수성이 많이 떨어질 듯 하다.

 나. package
  package 는 상당히 중요하며, 전체적인 struts2 의 Action, result 등의 구조를 파악할 수 있다. 

  namespace 속성
   URL과 맵핑하는데 사용된다. 아래와 같은 struts2 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="chapterTwo" namespace="/chapterTwo" extends="strutsdefault">
		<action name="Name">
			<result>/chapterTwo/NameCollector.jsp
			</result>
		</action>
		<action name="HelloWorld" class="manning.chapterTwo.HelloWorld">
			<result name="SUCCESS">/chapterTwo/HelloWorld.jsp
			</result>
		</action>
	</package>
</struts>

namespace="/chapterTwo" 는, 아래와 같은 URL Mapping 구조로 해석될 수 있다.



-------
  Action 인터페이스 상속
   Action 인터페이스는 상속받아도 되고 안받아도 된다. 상속 받으면, SUCCESS, ERROR, NONE, ERROR, INPUT, LOGIN 등의 미리 정의 된 문자열 상수를 사용할 수 있고, public void execute() 함수정의를 필수로 Override 한다라는 잇점 정도가 있다. 

  ValueStack 과 JavaBean 으로의 Action
 Form 데이터 날라오면, ParameterInterceptor 에서, ValueStack 을 만들고, Action 의 setter method 를 호출하여 값을 설정해준다.
반응형
블로그 이미지

Good Joon

IT Professionalist Since 1999

,