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 를 호출하여 값을 설정해준다.
반응형
'Software Development > Frameworks' 카테고리의 다른 글
Struts2 강좌 - 2. Struts2 태그라이브러리 사용방법 (OGNL 과 기본지식) (0) | 2009.08.16 |
---|---|
AppFuse 설치 중 equinox 어쩌고 에러 날 때 (0) | 2009.08.07 |