본문 바로가기

FrameWorks/Struts

STRUTS2 - 스트럿츠2 개발 환경 구축 (이클립스 3.x + J2SE 1.6 u13) [1]



환경구축에 앞서 필요한 필수 파일 및설치


▶안내◀

본 문서를 작성하면서 아래의 인터넷 웹페이지 및 서적을 참고하였음을 밝힙니다.

실제 예제를 수행하면서 작성된 문서이므로, 일부 환경에서는 작동하지 않을 수 있습니다.

▣참고 웹 사이트

▣참고 서적

  • 스트럿츠2 프로그래밍; 출판사:에이콘; 저자:현철주,정광선,민상기

▣스트럿츠2는 다음의 환경에서 구동이 가능합니다.

  1. 이클립스 WTP 3.x 이상의 버전이 설치된 PC
  2. J2SE 5.0 이상의 버전
  3. Apache Tomcat 5 이상


STEP 1 : J2SE 설치─━★


▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)

  • 아래의 버전은 Java SE Development Kit with JavaFX (JDK 6u13 / FX 1.1) 입니다.

https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u13-javafx-1.1.1-oth-JPR@CDS-CDS_Developer

  • 설치를 끝낸 후에는 운영체제의 환경변수에 JAVA_HOME과 CLASSPATH 및 PATH에 J2SE가 설치된 폴더의 PATH를 지정합니다.
  • 기본값으로 설치를 하였다면 아래의 폴더에 각각 설치되며, 아래의 변수로 등록하면 됩니다.
    • JAVA_HOME = C:\Program Files\Java\jdk1.6.0_13
    • Path = C:\Program Files\Java\jre1.6.0_13\bin
    • CLASSPATH = C:\Program Files\Java\jdk1.6.0_13\lib\tools.jar
  • 다음의 순서를 따라 환경변수를 등록하세요
    1. 시작->설정->제어판
    2. 시스템
    3. 고급 탭 -> 환경변수 클릭
    4. 시스템 변수 그룹의 새로 만들기 버튼을 클릭하고 위에 나열된 변수를 등록 혹은 추가 합니다.


STEP2 :Apache Tomcat설치─━★


▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)

http://tomcat.apache.org/download-60.cgi

  • 톰캣의 설치를 끝낸 후에도 환경변수를 등록해 줍니다.
    • TOMCAT_HOME = C:\Program Files\Apache Software Foundation\Tomcat 6.0
    • CATALINE_HOME = C:\Program Files\Apache Software Foundation\Tomcat 6.0
    • CLASSPATH = C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar
  • 톰캣이 제대로 실행되는지 확인할려면 "시작->실행", CMD 를 입력하고 COMMAND 창에서 startup 수행
  • 그런 다음 웹브라우저에서 http://localhost:8080 을 수행하면 됩니다. (# 기본포트를 설치시에 변경하였다면 그 포트 번호를 입력하세요)


STEP3 :이클립스 3.x WTP설치─━★


▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-jee-ganymede-SR2-win32.zip


STEP4 :스트럿츠2설치─━★


▣아래의 링크를 클릭하여 다운받고 설치를 합니다.

  • 사용하는 스트럿츠2는 Struts 2.1.6 버전입니다.

http://struts.apache.org/download.cgi#struts216





▲ 다운받은 파일의 압축을 풀면위와 같은 폴더와 파일이 생성됩니다.


NEXT ▶ 개발환경 선택하기


▣스트럿츠2 개발환경은 아래와 같이 크게 두 가지로 나눌 수 있습니다.

  1. 일반적으로 많이 했던 Dynamic Web Project 를 이용해서 라이브러리를 추가하는 방법
  2. 이클립스용 톰캣 플러그인을 설치하여 TOMCAT 홈을 지정하여 사용하는 방법


개발환경 선택하기▶ Dynamic Web Project 로 구성하기


▣다음의 절차를 따라 프로젝트를 생성하고 기본적인 샘플 예제를 통하여, 스트럿츠2 구동을 확인해 보았습니다.


▲ [1] 새로운 Dynamic Web Project 를 시작합니다.





▲ [2] 프로젝트 이름을 정하시고, 서버를 확인하시고 NEXT





▲ [3] 설정된 사항을 확인하고 Finish 를 클릭합니다.





▲ [4] 추가된 프로젝트에서 Properties 에 들어가서 Text file Encoding 을 UTF-8로 변경합니다.

스트럿츠2에서는 한글확장완성형(MS949)보다는 유니코드 UTF-8을 권장하기 때문입니다.





▲ [5] 이전에 다운받은 스트럿츠2 폴더의 lib(라이브러리)에서 필요한 라이브러리를 복사합니다.





▲ [6] 프로젝트의 WEB-INF/lib 에 스트럿츠2 라이브러리를 추가합니다.





▲ [7] 위의 화면처럼 구성되도록 합니다.





▲ [8] 이제부터 web.xml , struts.xml 의 환경설정을 시작합니다.

XML Editor 보다는 Text Editor 가 편집하기 수월합니다.





▲ [9] web.xml의 내용은 위와 같습니다.

위의 내용은 기본적인 스트럿츠2 라이브러리를 사용하기 위한 방법입니다.

이전의 스트럿츠1에서와는 다르게 스트럿츠2에서는 Filter-Dispatcher라는 것으로 각각의 클래스와 맵핑을 시켜줍니다.





▲ [10] 다음으로 추가할 파일은 struts.xml 입니다.

이 파일은 실제로 Web-INF/classes 에 존재하게 될 것이지만, 그 것은 톰캣이 자동으로 해주기 때문에 신경 안쓰셔도 됩니다.

다만, 그곳에 위치하게 할려면 톰캣이 먼저 인식을 할 수 있도록 해야겠죠?

따라서, Java Resource:src 에 파일을 추가합니다.





▲ [11] 위의 화면처럼 새로운 파일을 추가합니다. 추가할 파일이 xml 확장자를 가지므로 XML을 선택합니다.





▲ [12] 프로젝트를 찾고, src 폴더에 클릭한 후에 파일명을 struts.xml 로 지정하고 Next 를 클릭합니다.





▲ [13] XML의 타입을 설정하는 부분입니다. 그냥 Next 하시면 됩니다.





▲ [14] 끝





▲ [15] -





▲ [16] struts.xml 에는 위의 내용이 들어가게 됩니다.

위의 내용은 실제로 어떠한 Action이 끝나고 난후의 Result 결과 페이지를 연결시켜주는 역할을 하는

컨트롤러의 역할을 하는 부분이 됩니다.

● action name : 실제로 웹 페이지에서 호출할 이름이 됩니다.

● <result></result> :이 안의 부분은 결과값이 출력될 페이지의 경로를 지정합니다.





▲ [17] 이제 실제로 작업을 하게 될 액션 페이지를 작성해보도록 하겠습니다.





▲ [18] 패키지를 우선 만드시고,





▲ [19] 패키지내에 자바 클래스를 작성합니다.





▲ [20] 첫 입문으로 가장 쉽다는 Echo 예제입니다.

이것은 마치 C프로그래밍을 배우면서 Hello World 를 하는 것과 같은...거겠죠...........





▲ [21] 위와 같이 작성합니다.

위의 소스를 보시면 get/set 메소드가 존재하는 것을 보실 수 있으며,

그리고 중요한 역할을 하게 되는 execute()라는 메소드도 보실 수 있습니다.

  • execute()
    • 스트럿츠2에서 액션은 하나의 자바 클래스 입니다. 스트럿츠2에서 액션을 만든다는 것은 POJO클래스 기반으로 특정한 형식에 구애받지 않고 만들 수 있다는 것을 의마하게 되는데, 여기에서 액션클래스를 사용하기 위해서는 몇가지 규칙이 필요합니다.
      • 액션 클래스는 스트럿츠2가 액션을 실행하기 위한 엔트리 포인트로서 기본 액션 메소드인 execute()메소드를 가져야 합니다. 하지만 이 메소드를 반드시 가져야할 필요는 없습니다. 개발자가 원하는 메소드 이름을 사용할 수 있지만, 특별한 정의가 없을 경우에는 스트럿츠2는 액션 메소드로서 execute()메소드를 찾습니다.

public class Action{

public String execute() throws Exception{

.... //여기에 비즈니스 로직을 호출하는 코드를 작성합니다.

return "success";

}

}

    • 기본 액션 메소드인 execute() 메소드는 String 타입을 반환하게 됩니다.
    • 액션 메소드가 반환하는 문자열은 액션 실행이 끝나고 어떠한 리절트(결과)페이지를 실행할지 결정하기 위해 사용되며, 이 메소드가 반환하는 문자열의 값을 '리절트 코드'라고 합니다.
    • 경우에 따라 리절트 코드가 필요 없을 때는 void 타입을 사용할 수 있습니다.
    • 사용자는 이렇게 만들어진 액션 메소드를 호출할 수 있어야 하는데 기본적으로 리절트 이름.action 이 되며, 이 값은 스트럿츠2 환경설정 파일인 struts.xml 에서 다음과 같이 지정합니다.
      • <action name="iAction" class="exam.iAction">
      • <result name="success">/result.jsp</result>
      • </action>
        • iAction : 액션의 이름
        • exam.iAction : 액션 클래스의 경로
        • success : 액션 메소드가 반환하는 문자열
        • result.jsp : 결과값 (리절트) 페이지
      • <action/>은 액션을 정의할 때 사용하며, name, class, method 속성이 있습니다.
        • name : 액션이름을 정의(이때, 액션의 기본 확장명 .action은 생략합니다)
        • class : 사용할 액션 클래스를 정의
        • method : 액션 메소드 이름을 정의할 때 사용(생략할 경우 execute()메소드를 기본값으로 사용합니다)
      • <result/>는 액션 수행이 완료된 후 실행될 결과값(리절트)을 정의할 때 사용합니다.
      • 이것은 <action/>사이에 정의하고 name, type 속성을 갖습니다.
        • name : 액션 메소드가 반환하는 결과값(리절트)코드 문자열 값을 정의
        • type : 리절트의 종류를 정의
        • 이외에도 dispatcher, redirect 등이 있습니다.



▲ [22] 이제 결과값(리절트)페이지를 작성합니다. WebContent 아래에 생성하도록 하세요.





▲ [23] 위와 같이 이름을 지정하고,





▲ [24] 위와 같이 작성합니다.

    1. 첫번째의 <%@ taglib prefix = "s" uri="/struts-tags"%>는 스트럿츠2를 사용하기 위해 태그라이브러리를 정의하는 부분입니다.
    2. 두번째 부분에서 <s:form ... /> 과 <s:textfield/>, <s:submit/>는 스트럿츠2에서 제공하는 기본 컨트롤입니다.





▲ [25] 자, 이제 시작해볼까요!?





▲ [26] 응? 열심히 작성했는데 잘 되지 않습니다. -_ㅠ 이럴수가 흑.........





▲ [27] 위의 사항을 확인합니다.

액션으로 이동해서 어떤 작업을 수행한 후에, 결과값이 표시되는 리절트 페이지와의 맵핑이 제대로 수행되지 않을 경우, 페이지가 올바르게 표시되지 않거나, 찾을 수 없습니다.





▲ [28] 많은 분들이 겪으셨을 문제 중 하나인 이것은 스트럿츠2의 라이브러리 버전이 2.1.x 로 업데이트 되면서 나타났던 문제입니다.

    • 이전 스트럿츠2 2.0.x 버전에서는 필수 요소의 라이브러리만 추가하면 됐으나, 2.1.x로 최근에 업데이트 되면서, 추가할 라이브러리가 늘어났습니다. 원인은 모릅니다만. 아래의 사이트에서 변경된 사항을 확인할 수 있었습니다.
    • [필수 라이브러리]
      • antlr-2.7.2.jar
      • commons-beanutils-1.7.0.jar
      • commons-chain-1.2.jar
      • commons-fileupload1.2.1.jar - 새롭게 추가해야할 라이브러리
      • commons-io-1.3.2.jar - 새롭게 추가해야할 라이브러리
      • commons-logging-1.0.4.jar
      • commons-logging-api-1.1.jar
      • freemarker-2.3.13.jar
      • ognl-2.6.11.jar
      • oro2.0.8.jar
      • struts2-core02.1.6.jar
      • struts2-dojo-plugin-2.1.6.jar - 새롭게 추가해야할 라이브러리
      • struts-core-1.3.10.jar
      • xwork-2.1.2.jar
    • 위의 라이브러리를 정상적으로 추가했더라도 제대로 작동이 안되는 경우가 있습니다.
    • 예를 들면, 다운받은 스트럿츠2의 모든 라이브러리를 추가할 경우에는 작동이 되지 않습니다.
    • 라이브러리를 사용해야할 용도나 목적에 맞게 사용해야 합니다. 그렇지 않을 경우에는 클래스 로더에 문제가 생겨서 사용할 수 없습니다-_ㅠ
    • 참 까탈스럽군요.................





▲ [29] 이제 작동이 됩니다. 그런데 주소창을 유심히 살펴보세요.

일반적인 . jsp로 호출하는 것이 아니라, .action 으로 호출하는 것을 알 수 있습니다.

이것은 스트럿츠2가 액션 맵핑을 통하여 리절트(결과페이지)값을 출력한다는 것을 알 수 있습니다.

또 다른 예제를 준비해 보았습니다.





▲ [30] -





▲ [31] -





▲ [32] -





▲ [33] -





▲ [34] -

다음 편에서는 TOMCAT 을 직접 이용하는 프로젝트 구성 방법을 알아보도록 하겠습니다.

많은 분들이 다이나믹을 사용하지만, 다이나믹은 WAR 파일을 재배포해서 서버에 올려야 하기 때문에,

작업에 번거로움이 있을 수 있습니다.

따라서, 변경 즉시, 웹 서버에 적용이 될 수 있도록 하는 이른바, 톰캣 프로젝트를 알아보도록 하겠습니다.