환경구축에 앞서 필요한 필수 파일 및설치
▶안내◀
본 문서를 작성하면서 아래의 인터넷 웹페이지 및 서적을 참고하였음을 밝힙니다.
실제 예제를 수행하면서 작성된 문서이므로, 일부 환경에서는 작동하지 않을 수 있습니다.
▣참고 웹 사이트
- ninja님의 블로그 : http://hninja.tistory.com/entry/%EC%8A%A4%ED%8A%B8%EB%9F%BF%EC%B8%A02-%EC%85%8B%ED%8C%85-%EB%B0%8F-%EC%B2%98%EC%9D%8C-%EC%9E%85%EB%AC%B8%EC%9A%A9%EC%9C%BC%EB%A1%9C-%EC%A2%8B%EC%9D%80-Echo%EC%98%88%EC%A0%9C
- syaku님의 블로그 : http://syaku.tistory.com/38
- http://darkhorizon.tistory.com/archive/20090408
- http://gauryan.egloos.com/2324959
- http://cwiki.apache.org/S2WIKI/troubleshooting-guide-migrating-from-struts-20x-to-21x.html
▣참고 서적
- 스트럿츠2 프로그래밍; 출판사:에이콘; 저자:현철주,정광선,민상기
▣스트럿츠2는 다음의 환경에서 구동이 가능합니다.
- 이클립스 WTP 3.x 이상의 버전이 설치된 PC
- J2SE 5.0 이상의 버전
- Apache Tomcat 5 이상
STEP 1 : J2SE 설치─━★
▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)
- 아래의 버전은 Java SE Development Kit with JavaFX (JDK 6u13 / FX 1.1) 입니다.
- 설치를 끝낸 후에는 운영체제의 환경변수에 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
- 다음의 순서를 따라 환경변수를 등록하세요
- 시작->설정->제어판
- 시스템
- 고급 탭 -> 환경변수 클릭
- 시스템 변수 그룹의 새로 만들기 버튼을 클릭하고 위에 나열된 변수를 등록 혹은 추가 합니다.
STEP2 :Apache Tomcat설치─━★
▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)
- 아래의 버전은 Tomcat 6입니다.
- 톰캣의 설치를 끝낸 후에도 환경변수를 등록해 줍니다.
- 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설치─━★
▣아래의 링크를 클릭하여 다운받고 설치를 합니다. (설치과정 생략)
STEP4 :스트럿츠2설치─━★
▣아래의 링크를 클릭하여 다운받고 설치를 합니다.
- 사용하는 스트럿츠2는 Struts 2.1.6 버전입니다.
http://struts.apache.org/download.cgi#struts216
▲ 다운받은 파일의 압축을 풀면위와 같은 폴더와 파일이 생성됩니다.
NEXT ▶ 개발환경 선택하기
▣스트럿츠2 개발환경은 아래와 같이 크게 두 가지로 나눌 수 있습니다.
- 일반적으로 많이 했던 Dynamic Web Project 를 이용해서 라이브러리를 추가하는 방법
- 이클립스용 톰캣 플러그인을 설치하여 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] 위와 같이 작성합니다.
첫번째의 <%@ taglib prefix = "s" uri="/struts-tags"%>는 스트럿츠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 파일을 재배포해서 서버에 올려야 하기 때문에,
작업에 번거로움이 있을 수 있습니다.
따라서, 변경 즉시, 웹 서버에 적용이 될 수 있도록 하는 이른바, 톰캣 프로젝트를 알아보도록 하겠습니다.
'FrameWorks > Struts' 카테고리의 다른 글
STRUTS2 - 스트럿츠2 는 무엇일까? (0) | 2012.10.26 |
---|---|
STRUTS2 - 스트럿츠2 개발 환경 구축 (이클립스 3.x + J2SE 1.6 u13) [2] (0) | 2012.08.25 |
Struts태그라이브러리 사용서 - HTML태그라이브러리 (0) | 2012.08.15 |