이클립스 + 톰캣 + 스프링 MVC + maven 개발환경 구축

 

2012.01.27

출처 - http://springmvc.egloos.com/429363

설치 환경 - Eclipse Indigo 3.7.1, Tomcat 7.0.25, spring MVC, maven 3.0.4

 

이 세팅은 가난한 개발자들이 필수적으로 갖추어야 할 기본포맷이다. 이 세팅 그대로 서버에 업로드 할 수도 있고, maven을 활용해 개발해놓은 자료들을 jar로 압축하여 심플하게 서버에 업로드할 수도 있다. 그러므로 개발환경 구축에 있어서 스프링을 활용하고, maven으로 버전관리를 함과 동시에 다양한 자바 오픈소스들을 최신버전으로 유지하고 싶다면 필수적으로 위의 구축환경을 갖추고 있어야 한다. (사실 이 글을 쓰는 시점엔 maven은 아직 잘 알지 못하여... 글을 써나가면서 어느 정도 알아가야겠다.)

 

헌데 세상에 나보다 잘난 개발자들이 넘쳐나는데도 굳이 내가 이 글을 쓰는 이유는... 이것이 가난한 개발자, 또는 개발 테스트 세팅의 가장 기초적인 베이스면서... 이 세팅을 완벽하게 구축할 수 있는 참고 블로그 글을 찾을 수 없었다는 거였다. 세팅에 시간과 돈을 투자하는 것만큼 부질없는 짓이 없다 생각하는 나로써는 이 글을 문서로 남겨 다른 개발자들이 참고할 수도 있게 하고 나의 치매끼를 위해서라도 문서로 남겨두는게 좋다는 이유에서다.

 

개인적으로 이클립스의 무시무시한 IDE가 이러한 세팅과정을 해결해주리라 믿었지만 경험해본 결과 스프링 MVC는 톰캣과 연동되려면 개발자가 직접 세팅에 참여하는 게 필수적이다. 제대로된 개발환경을 구축하려면 기본세팅만으론 해결할 수가 없다. 차후에 이클립스가 이런 불편함을 부디 해결해주기 바란다. 지금부터 내 컴퓨터에 남아있는 기존의 이클립스와 톰캣을 깔끔하게 지우고 처음부터 다시 시작해본다.

 

 

1장 이클립스 설치

 

1.1 이클립스 다운로드

 

이클립스는 하단의 URL에 들어가 Eclipse IDE for Java EE Developers, 212 MB를 선택해 받길 바란다. javaEE를 받는 이유는 어차피 Spring이 Enterprise Edition을 돕는 프레임워크인데다 지금 톰캣을 설치하고 mysql을 설치하는 이상 javaEE의 도움을 안받을 수가 없기 때문이다.

 

JavaSE : 일반적이니 자바프로그래밍 언어와 소규모 어플리케이션 및 애플릿을 작성하는 제품.

JavaEE : 기업용 플랫폼이며 서버에서 실행되는 대형분산 및 확장, 트랜잭션, 보안 들 각종 기능을 제공하는 제품.

JavaME : 소형용 플랫폼이며 작은 규모의 서비스를 개설하려는 소비자들을 위한 기능만 추려낸 제품.

 

http://www.eclipse.org/downloads/

현재 글을 쓰는 시점에 최신판은 Eclipse Indigo(3.7.1) 버전이며 32bit와 64bit를 선택해서 다운 받을 수 있다. 만약 자신의 윈도우가 몇비트를 지원하는지 알고 싶다면 시작 - 실행에서 msinfo32를 실행시키면 확인할 수 있다. 하단의 사진은 윈도우7을 기준으로 msinfo32를 구동해 자신의 시스템 종류를 확인하는 방법이다.

 

 

나의 환경은 X86 즉, 32bit에서 구동되는 시스템이다. 간혹 숫자가 높으면 64bit고 낮으면 32bit라고 잘못 오해하는 분들이 계시는데 X86이 32bit 환경이고 X64가 64bit 환경이다. 개인적으로 64비트를 지원하는 프로그램도 많지 않은데 괜히 헷갈리게 되서 짜증이 조금 나긴 하지만.. 기술의 발전을 짜증만으론 막을 수는 없다.

 

이제 이클립스를 받았다면 압축을 풀고 자신이 원하는 폴더에 넣도록 하자. 개인적으로 이클립스는 설치가 필요하지는 않지만 하나의 프로그램이므로 Program Files 폴더에 위치하거나 따로 개발에 관한 폴더를 따로 만들어 놓고 거기다 관련 프로그램들을 위치시키길 바란다.

 

1.2 이클립스 한글화

 

이제 이클립스를 깔았다면 한글화를 시켜야 한다. 외국물 좀 먹었다면 굳이 한글화할 필요는 없지만 대부분의 개발자들이 먹어 본 외국물은 자판기 커피밖에 없을테니 한글화를 시키는 것이 정신 건강에 좋다. 근데 솔직히 원어판에 익숙해져서 사용하는 것이 가장 유익하긴하다. 불편한 리소스로 프로그램을 느리게 하지도 않고 자기가 세팅해논 이클립스가 아니더라도 전세계 어디서나 이클립스를 활용할 수 있게 되기 때문이다. 필자도 원어판으로 adobe프로그램을 익혔었는데 일본 유학시에 굉장히 유익했다.

 

어쨌든 한글화를 원한다면 다음과 같은 과정을 따르면 된다.

 

http://www.eclipse.org/babel/downloads.php

위의 URL로 접근하여 딴 건 클릭하지 말고 http://download.eclipse.org/technology/babel/update-site/R0.9.1/indigo 긁어 복사한다. 그리고 자신의 이클립스를 실행시키고 (이클립스를 실행시키면 workspace 공간을 정해달라는 메시지가 뜨는데 일단 아무데로나 해두기로 한다. 나중에 톰캣의 webapps폴더로 해두어야 하는데 이건 나중에 설명하기로 하겠다.)

 

설치 순서는 다음과 같다. 성질 급한 필자는 먼저 황급히 한글화를 해버렸던지라.. 이미지에 대한 오해가 없길 바란다. 

 

  • 도움말 > Install New Software를 클릭한다.
  • 복사해둔 주소를 Work with에 붙여 넣고 잠시 기다린다.
  • 하단에 뜬 설치 목록에서 Babel Language Packs in Korean을 선택하고 설치를 시작한다.

매우 간단한 과정이므로 별도의 설명은 하지 않겠다.

 

이 파트에서 매우 중대한 문제점이 발견되었다. 

 

 

언어 팩 중에 위의 표시된 Babel Language rt.rap in Korea는 이 개발환경 구축 과정에서 설치해서는 안된다. 만약에 이것을 설치하고 창(window) - 환경설정이 열리지 않는다던가 새로 작성 마법사가 실행되지 않을 수 있다. 저 언어팩을 제외한 나머지는 설치해도 좋다.

 

1.3 이클립스 STS (SpringSource Tool Suite) 설치

 

STS는 스프링의 개발을 돕는 매우 강력한 기구이다. 그리고 이 툴을 다운받으면 프로젝트 생성에 강력한 혜택을 받을 수 있다. Spring 개발자에겐 필수 툴이므로 반드시 설치하도록 한다.

 

 

이클립스의 마켓플레이스를 활용해서 STS 플러그인을 설치해보도록 하자. 마켓플레이스에서 SpringSource Tool Suite를 검색한 뒤에 Indigo(3.7)버전을 위한 STS를 다운 받도록 하자. 이클립스의 버전에 대해 간혹 헷갈려 아무거나 설치하는 사람들이 있는데 Indigo - Heilo - Galileo의 3가지 버전이 있다. 현재 Indigo(3.7)버전이 최신이며 우리가 설치한 소프트웨어 또한 Indigo 3.7버전이다.

 

STS를 설치하였다면 이제 당신은 Spring 개발환경을 갖춤과 동시에 한글화시킨 이클립스 개발환경을 갖추게 되었다. 허나 좋아하긴 아직 이르다. SpringMVC를 활용하려면 maven과 톰캣 설치가 필수적이다. 이후의 글은 2장에서 계속 잇도록 하겠다.

 

 

2. 톰캣 설치하기

 

2.1 톰캣 바이너리 버전 다운로드

 

톰캣은 워낙 많은 사람들이 애용하는 프로그램인지라 Apache 답지 않게 이 프로그램에 대한 윈도우 인스톨 버전을 따로 만들어 두었다. 하지만 톰캣 윈도우 인스톨 버전은 간편하고 서버를 구동하기도 쉽지만 개발자라면 서버 환경에서도 톰캣을 실행하고 여러가지 명령어들을 익혀두어야 하기 때문에 binary버전에 익숙해지는 것이 필수적이다.

 

 

그러므로 이 글에서도 톰캣의 binary버전을 설치하도록 하겠다. 과정은 매우 쉽다. http://tomcat.apache.org/download-70.cgi 에 접속하여 현재 일자로 최신버전인 7.0.25를 다운받도록 하자. 윈도우 환경에 따른 여러가지 버전이 있는데 자신이 32bit 운영체제이고 Windows를 사용한다면 빨간색으로 표시된 버전을 받도록 한다. (만약에 향후 톰캣의 버전이 올라간다면 상기 URL주소는 최신버전을 지원하지 않을 수도 있다.)

 

 

2.2 톰캣 바이너리 환경변수 설정

 

위의 파일을 다운받으면 apache-tomcat-7.0.25-windows-x86.zip파일이 생겨난다. 먼저 압축을 풀고 안에 apache-tomcat-7.0.25 폴더를 톰캣이 자리잡길 원하는 위치로 이동시키면 된다. 그 다음 톰캣의 bat파일들을 실행시키기 위해 환경변수에 톰캣폴더를 등록시켜야 하는데 과정은 다음과 같다.

 

 

윈도우7이라면 시작에서 환경변수를 검색한 뒤 위의 그림과 같이 '계정의 환경변수 편집'로 접근하면 바로 환경변수 설정으로 이동한다. XP같은 경우에는 내컴퓨터에서 등록정보를 통해 접근하는 방법이 있다. 어떤 방법을 쓰던 일단 환경변수로 접근하기만 하면 된다.

 

일단 환경변수를 등록하기 전에 우리가 환경변수를 등록하는 이유를 일단 먼저 알아두어야 할 것 같다. Apache에서 제작된 프로그램들은 리눅스/Unix 환경에서도 유연하게 돌아가도록 설계되어있으므로 프로그램의 가장 원시적인 커맨드 창에서 실행되도록 제작되어 있다. 그래서 윈도우에서 커맨드 창을 이용해 해당 프로그램의 명령어를 구동시키기 위해서는 프로그램의 bat파일을 윈도우에 등록시켜야 하는데 환경변수 등록은 바로 이런 과정의 하나인 셈이다.

 

환경변수 등록이 필요한 이유를 이해했다면 이제 환경변수를 등록해보자. 먼저 환경변수에 등록 과정은 다음과 같다. 먼저 CATALINA_HOME이란 변수를 새로 만들어야 하는데 아래의 빨간색으로 표시된 '새로 만들기'를 클릭하고 변수의 이름과 값을 아래와 같이 입력하도록 한다. 변수명은 CATALINA_HOME 이고 변수의 값은 톰캣이 위치한 폴더이다.

 

 

필자는 자바 개발에 관한 프로그램들을 C드라이브에 JavaDE(Development Environment)폴더에 모두 위치시키기로 했으므로 톰캣이 위치한 폴더는 위의 그림과 같다. tomcat 폴더명은 앞으로도 자주 쓰이게 되므로 위와같이 간단하게 tomcat으로 줄여서 쓰는게 편리하다.

 

당신이 위의 그림과 같이 사용자 변수에 CATALINA_HOME을 등록시켰다면 사용자 변수 등록은 마친 셈이고 이어서 기존에 등록되있는 환경변수 PATH에 설정한 tomcat/bin폴더를 등록시켜야 한다. 톰캣의 bin폴더 내에는 톰캣 구동에 필요한 파일들이 전부 위치해 있으므로 PATH에 해당 주소를 등록시켜주어야 커맨드창에서 올바르게 명령어를 구동시킬 수 있다.

 

 

PATH등록은 사용자 변수를 작성하는 것과는 똑같은 셋팅이 아니다. 이번엔 사용자 변수 중 PATH를 변경시켜주는 것이다. PATH의 환경변수 값 중 기존에 있는 것들은 절대 지우지 말고 맨 뒤로 가는 end키를 눌러 다음과 같은 경로를 추가해주자. 세미콜롬을 빼먹어서는 절대 안된다.

 

;

 

이게 세미콜럼이다. 혹시라도 이상한 것을 넣어두는 사람들이 많아 강조한다. 그리고 폴더는 톰캣폴더의 bin폴더까지 입력시켜야 함은 물론이다.

 

 

2.3 톰캣 구동확인하기

 

위와같은 설정을 마쳤다면 당신은 톰캣 설치에 모두 성공한 것이다. 직접 서버를 구동시켜 서버가 정상적으로 구동하는지 확인해보자. 간단한 커맨드창을 하나 열어 startup이라고 명령어를 넣으면 아래와 같은 창이 뜨는데 제대로 설정하였다면 이런 식으로 서버를 구동할 수 있을 것이다.

 

 

 

3. 메이븐 설치

 

3.1 maven 다운로드

 

이제 메이븐을 설치해보록 하자. 메이븐은 톰캣과 마찬가지로 아파치에서 만든 훌륭한 오픈소스 프로그램이며 벌써부터 다양한 플랫폼에서 광범위하게 사용되고 있는 자바 라이브러리 관리 프로그램이다. 먼저 메이븐이 뭔지도 모르고 과정만 따라가며 설치하는 사람이 있을 듯 하여 왜 메이븐을 사용해야 하는지 간략하게 소개하도록 하겠다.

 

메이븐은 한마디로 자바의 광범위한 jar 패키지를 관리해주는 프로그램이다. 자바는 객체지향적인 프로그래밍 언어으로서 하나의 개발사가 개발을 독점하는 프로그래밍 언어가 아닌 전세계 사용자에 의해서 발전해온 독특한 프로그래밍 언어였다. 그러다보니 다양한 프레임워크들이 생겨나게 되었고 중복된 기능을 자신만의 방법으로 제공하는 프레임워크들도 부지기수로 많다.

 

거기 뿐인가, 한 프레임워크의 특정기능이 다른 프레임워크를 의존하는 경우가 있다. 자바가 엄청난 확장성을 가진 언어임에는 틀림없지만 이렇게 우후죽순으로 관리가 되지 않는 점은 항상 큰 문제점임에 틀림없다. 예를 들어 어느 훌륭한 라이브러리를 다운받아서 개발을 완료했는데 해당 라이브러리의 의존 프레임워크가 너무 신버전이라 미묘한 버그가 생긴다던지 하는 문제 말이다.

 

이런 문제가 해결되려면 모든 라이브러리와 프레임워크는 하나의 큰 틀에서 관리되어야 하고 지속적으로 유지보수 되어야 한다. 게다가 자신이 개발한 코드의 버전 또한 분명히 명시해 두어야 하고 쉽게 또다른 jar파일로 배포할 수도 있어야 한다. 메이븐은 바로 이런 자바프로그래밍의 문제점에서 나온 프로그램이다. 우리는 메이븐을 설치하면 따로 인터넷에서 jar파일을 긁어올 필요도 없고 메이븐을 통해 원하는 버전을 다운받기만 하면 된다. 게다가 사용 중인 프레임워크가 현재 몇버전까지 나왔는지 알 수도 있고 원한다면 업데이트 또한 가능하다.

 

이런 강력한 기능을 제공하는 메이븐을 이제 우리도 한번 설치해보도록 하자. 먼저 http://maven.apache.org/download.html로 접속하여 현재 Maven의 최신 Binary버전을 받도록 한다. 현재 작성일자로 Maven 3.0.4가 최신버전이며 필자는 Maven 3.0.4버전을 받았다.

 

 

3.2 메이븐 환경변수 설정

 

다운받았다면 다운받은 폴더에 apache-maven-3.0.4-bin.zip 파일이 생길 것이다. 압축을 풀고 원하는 폴더에 위치시키도록 하자. 메이븐의 설치과정은 톰캣의 설치과정과 매우 비슷한데 아파치에서 만든 프로그램의 설치는 사실 거의 비슷하다. 우리가 윈도우 인스톨러에 익숙해져 있어서 이런 것을 어려워할 뿐이지 한번 경험하고 나면 이런 설치과정이 훨씬 쉽고 빠르다. 메이븐도 톰캣처럼 환경변수를 등록시켜주도록 하자.

 

톰캣 설치과정과 동일하게 MAVEN_HOME이란 변수를 새로 만들어주고 메이븐이 위치한 폴더를 변수 값으로 설정한다. 그리고 환경변수 중 PATH에 메이븐 폴더 내에 bin폴더가 잡힐 수 있도록 설정해준다. 단 메이븐 설치에 반드시 주의해야 할 점이 하나 있다. maven이 동작하려면 환경변수 중에 JAVA_HOME 변수가 반드시 필요한데 이것이 설정되어있지 않다면 반드시 설정해주어야 한다.

 

 

위와같은 JAVA_HOME 변수가 없다면 maven은 동작하지 않을 것이다. JAVA_HOME 변수는 현재 설치되어 있는 자바의 jdk폴더와 같다. jdk 뒤에 붙는 버전표시는 java버전에 따라 달라질 수 있다.

 

3.3 메이븐 설치확인

 

위와 같은 설정을 모두 마쳤다면 이제 메이븐 설치는 모두 끝난 셈이다. 마지막으로 커맨드창에서 mvn -version이란 명령어와 함께 메이븐에 제대로 동작하는지 확인해 보도록 하자.

 

 

이제 우리는 메이븐과 톰캣과 이클립스 + STS까지 모든 설치를 마쳤다. 이제 마지막으로 남은 과제는 이것을 모두 종합하여 무사히 톰캣서버에서 구동될 수 있도록 세팅만 하면 되는 것이다. 마지막 세팅과정은 다음 장에서 계속 하도록 하겠다.

 

 

이제 메이븐과 이클립스, 톰캣이 모두 같이 연동되도록 설정해보자. 이 과정은 지금 설정하는 필자도 함께 알아가며 하는 과정이기 때문에 문서가 변경될 수 있다는 점을 유의해주길 바란다. 일단 2장까지 설치한 환경을 기본으로 하여 이클립스에서 별도의 세팅없이 모두 한번에 스프링 개발을 메이븐으로 관리하는 것을 목표로 한다.

 

3. 이클립스의 메이븐 + 스프링MVC 설정

 

왜 이클립스에서 이런 불편한 설정을 해주어야 할까? 이클립스는 훌륭한 IDE툴이지만 아직 메이븐과 스프링과 톰캣이 제대로 연동될 수 있는 시스템을 사용자의 설정에 맡기고 있다. 물론 JUnit을 활용하여 굳이 서버를 실행시키지 않아도 예상값을 주고 받을 수 있는 환경 또한 구성할 수 있지만 제대로된 확인은 직접 서버를 구동해서 서비스가 어떻게 돌아가는지 확인하는 길일 것이다.

 

여기저기 많은 예제들이 있지만 현재 작성되고 있는 글은 처음부터 모든 서비스를 일일이 구축하는 과정을 담고 있으므로 제대로 정독하였다면 초기 세팅과정에서 많은 시간을 절약할 수 있을 것이다.

 

3.1 이클립스에서 MAVEN 플러그인 설치

 

이제 이클립스에서 maven을 활용할 수 있도록 플러그인을 설치해보자. 설치는 매우 간단한데... 마켓플레이스에서 Maven Integration for Eclipse를 설치하면 끝이 난다.

 

 

이 후에 환경설정에서 maven 플러그인을 설치했으니 직접 우리가 로컬로 설치한 메이븐을 잡아주어야 한다.

 

 

① 창 - 환경설정에서 Maven - Installations 설정에 들어간 뒤에 ② Add를 누르고 ③ 메이븐이 설치되어 있는 폴더를 설정한다. 그러면 자동으로  C:\JavaDE\maven\conf\settings.xml이 Global 세팅으로 잡히게 된다. 만약에 메이븐이 글로벌로 잡히는 것을 원하지 않는다면 Installations가 아닌 Maven - User Settings 에서 직접 settings.xml파일을 잡아주면 된다.

 

 

3.2 이 과정에서 겪었던 시행착오

 

이제 모든 준비는 끝이 났다. 사실 위에 내용에는 기술하지 않았지만 이 과정에서 엄청난 시행착오가 있어 몇시간동안 헤메였던지라 적을까 말까 고민하다 혹시라도 똑같은 시행착오가 있을 듯 하여 필자가 겪은 몇가지 에러사항을 적어두겠다.

 

 

처음 겪었던 시행착오는 바로 이런 다운로드 과정이었다. 인터넷을 돌아다니다 보면 이런 식으로 이클립스와 메이븐이 호환된다고 소개하는 블로그가 많이 있다. 정확히 어떤 차이 때문인지는 모르겠지만 마켓플레이스에서 배포하는 메이븐 통합 플러그인과 위의 URL로 다운받는 메이븐 통합 플러그인은 매우 큰 차이가 있었다. 상기의 URL로 다운받은 플러그인은 maven 프로젝트에는 정상적으로 작동하였지만 필자가 원했던 Spring Template로 작성한 Spring MVC와는 정상적으로 호환되지 않았다. 물론 마켓플레이스에서 받은 통합 플러그인은 maven프로젝트에서도 잘 작동하고 Spring MVC 프로젝트에서도 잘 작동하니 염려할 것 없다.

 

두번째로는 JDK 에러가 발생할 수 있다. 마찬가지로 위의 URL로 다운받을 시에 생기는 에러일수도 있고 마켓플레이스에서 배포하는 플러그인에서도 발생할 가능성이 있다. 말인즉 이클립스에서 JDK를 로딩할 수 있게 eclipse.ini 파일을 수정해 달라는 요청 에러인데 말그대로 eclipse.ini만 수정해주면 끝이 난다.

 

 

에러의 문구는 위와 같으며 만약에 이런 에러가 뜬다면 해결방법은 다음과 같다.

 

이클립스 폴더 루트에서 eclipse.ini파일을 연 뒤 아래 텍스트를 붙여넣으면 끝이다.

 

-vm

C:\Program Files\Java\jdk1.6.0_23\bin

 

반드시 2줄로 나누어서 넣어야 하고 이 문구가 들어갈 위치가 매우 중요하므로 가급적 제일 상단에 넣어주도록 하자. 테스트 해본 결과 openFile 문구 위쪽으로 넣으면 아무 이상없이 동작하는 것을 확인할 수 있었다.

 

제대로 동작한다면 다음과 같은 방법으로 확인할 수가 있다. "도움말 > Eclipse 정보" 로 이동한 뒤에"Installation Details > 구성"을 확인하면 위와 같이 jvm.dll파일을 eclipse가 매핑하고 있다는 것을 확인할 수 있다.

 

3.3 Spring MVC로 템플릿 제작!

 

여기까지 되었다면 이제 슬슬 Spring MVC 프로젝트를 만들어 보자. 기존의 커맨드 창으로 메이븐 프로젝트를 만들려면 커맨드창으로 프로젝트를 생성해야 하는 끔찍한 과정을 거쳐야 했지만 이제 우리가 깔아놓은 세팅 덕분에 이클립스는 자동으로 메이븐 프로젝트를 만들어 줄 것이며 라이브러리 또한 간단한 검색만으로 자동으로 찾아줄 것이다.

 

 

Spring MVC 프로젝트의 필드를 모두 채우고 확인을 누르면 이클립스가 개발에 필요한 기본 세팅을 맞춰준다. web.xml에서부터 root-context.xml, servlet-context.xml 세팅까지 모조리 말이다. 게다가 SpringMVC프로젝트가 자동으로 작성해준 pom.xml 정보를 메이븐 플러그인이 읽어들여 프로젝트가 생성됨과 동시에 필요한 라이브러리 목록을 가져와 준다.

 

이제 당신은 힘겹게 인터넷을 돌아다니며 필요한 라이브러리를 받을 필요가 전혀 없어졌다. 필요한 라이브러리가 있다면 아래의 그림과 같이 pom.xml을 열어 Dependencies에서 검색한 뒤 pom.xml을 저장만 하면 통합 메이븐 플러그인이 알아서 해당 플러그인을 찾아준다. 그야말로 최고의 제작환경이 갖추어 졌다고 할 수 있다.

 

 

이제 모든 제작환경이 갖추어졌다. 남은 건 테스트 뿐인데 이클립스에서 톰캣7.0 서버를 등록한 뒤에 이 서버를 이용해 지금 완성한 SpringMVC 프로젝트를 돌려볼 예정이다. 먼저 새로운 서버를 정의해보자.

 

하단에 패널 중에 서버를 선택한다. 만약에 서버 패널이 없다면 창 - 보기표시 - 서버를 클릭해서 하단 패널에 서버를 추가해줘야 한다. 서버 패널이 생겼다면 패널 내에서 오른쪽 마우스 클릭 후 새로 작성 - 서버를 클릭하면 된다.

 

 

서버를 추가하는 과정은 매우 쉽고 간편하다. 이클립스에서 서버 버전을 선택한 뒤에 서버가 위치한 폴더만 지정해 주면 끝이니 말이다. 그리고 서버를 추가하고 자신이 작성하고 있는 프로젝트를 이동시켜주면 끝이다.

 

 

이제 모든 설정과 과정이 끝이 났다. 일단 메이븐으로 불러들인 프레임워크와 직접 작성한 클래스를 불러들이는 JSP 뷰를 만들어 보고 서버로 돌려보자.

 

 

위와같이 정상적으로 프로젝트가 구동된다면 성공이다. 만약에 실패했다면 힘들더라도 다시 한 번 차근차근 단계를 밟아나가보기바란다. 그리고 기존의 있는 이클립스와 톰캣에서 이 글을 참고해 해당 환경을 구성하려 한다면 예기치 않은 오류들이 발생할 수 있다. 필자도 그런 에러에 지쳐 처음부터 삭제 후 다시 환경을 구성해준 것이므로 처음부터 깔끔하게 지우고 다시 새롭게 시작하는게 여러모로 정신건강에 이롭다.

 

사실 처음엔 간단히 요약식으로 작성하려다가 필자의 치매끼가 무서워 3부로 구성된 기나긴 포스트를 작성하게 되었다. 근데 사실 만들다 보니 어느새 이클립스에서 플러그인만 다운로드해서 설치하는 듯해 조금 당황스럽다. 사실 중간 과정에서 톰캣의 server.xml에서부터 conf 폴더에 있는 파일이란 파일은 죄다 열어서 수정해보고 별의별일이 있었는데 왠지 모르겠지만 처음부터 다 지우고 시작하게 되니 정상적으로 서버가 운영되었다.

 

먼저 세팅된 프로젝트 때문이었을 수도 있고 기존의 톰캣 프로젝트로 돌아가던 톰캣의 설정이 갑자기 메이븐 때문에 복잡한 폴더구성으로 서로 엉켰을 수도 있다. 그래도 혹시나 싶어 이클립스와 메이븐 톰캣을 다시 지우고 과정을 재차 밟았더니 동작되었으므로 이 방식은 어느정도 검증이 되었다고 말해주고 싶다.

 

다시 말하지만 세팅에 시간낭비하는 것만큼 아까운 것이 없다. 개발에 시간을 충분히 쏟을 수 있게 이 포스트로 많은 개발자들이 세팅시간을 단축했으면 하는 바램이다.

Posted by linuxism
,

xml namespace

Development/XML 2012. 3. 24. 14:13



출처 - 소설같은 XML


===================================================================================


요소 내에 xmlns 속성이 정의된 것을 자주 본다.

이 속성의 용도는 무엇일까?

요소의 이름 (Name)은 동일하게 사용하지만 의미가 다를 때

둘 간을 구분하기 위해 사용하는 이름공간 (Namespace)이다.

자바의 패키지 (Package)와 비슷한 역할을 하고 있다고 볼 수 있다.

보통 다음과 같이 사용한다.

<personxml:person xmlns:personxml="http://www.your.example.com/xml/person" xmlns:cityxml="http://www.my.example.com/xml/cities">
    <personxml:name>Rob</personxml:name>
    <personxml:age>37</personxml:age>
    <cityxml:homecity>
         <cityxml:name>London</cityxml:name>
         <cityxml:lat>123.000</cityxml:lat>
         <cityxml:long>0.00</cityxml:long>
    </cityxml:homecity>
</personxml:person>

xmlns:xxx에서 xxx는 이름공간을 요소에 사용할 때 Prefix이다.

생략될 경우 디폴트 이름공간에 대한 설정이 된다.

xmlns 속성의 값은 보통 URI이지만 실제 리소스 (Resource)가 존재하는 것은 아니다.

다만 식별자로서만 의미가 있다.

References:
http://stackoverflow.com/questions/1181888/what-does-xmlns-in-xml-mean
http://www.sitepoint.com/xml-namespaces-explained/











'Development > XML' 카테고리의 다른 글

XML - XML 스키마(XSD) 및 xsi 접두어 의미  (0) 2012.10.02
XML - XML 예약문자  (0) 2012.09.16
XML, DTD, XSD, XSL 관계  (0) 2012.02.13
Markup Language  (0) 2012.01.27
XML DOM(Document Object Model)  (1) 2012.01.23
Posted by linuxism
,

[출처] Spring @MVC - Hello Java 만들어 보기|작성자 Alex

 

1.   Tomcat Server 설정

  Tomcat Server Instance하나 만들기

Server view에서 우클릭 -> New -> Server를 클릭

   

   

Dialog에서 Tomcat Version을 고르고 Server name을 적당히 정해 주고 Next 

  

   

   

나처럼 Tomcat을 설치한적이 없는 사람은 Download and Install 클릭 바로 설치하자

   

   

Finish Click

   

Finish Click하면 Tomcat을 설치할 디렉토리 선택 dialog가 뜨는데 디렉토리를 선택하고 나면 아래의 창으로 돌아 온다.다시 Finish를 Click하면 tomcat을 download해서 설치하게 된다. 

  

   

   

Server View에서 설치된 Tomcat server를 확인 할 수 있다. 

  

   

Dynamic Web Project의 추가

내가 만든 Project를 구동시켜줄 Tomcat 서버도 만들었으니 이젠 Spring Project를 생성해 보자

   

Package Explorer Perspective에서 우클릭->New->Dynamic Web Project 선택

   

   

Project Name에 적당한 이름 넣고

JRE 부분은 default로 첫번째 radio button이 선택돼 있을 것인데 이대로 진행해도 무방하다. 하지만 나는 내가 설치한 그 jdk를 쓰도록 변경,

Finish Click해서 Proejct 생성 완료

   

   

Source폴더와 build된 class가 위치할 폴더를 설정하는 dialog인데 Add Folder 버튼을 클릭해서 config folder를 하나 추가한다.

나중에 이용할 일이 생길 수도 있다. 

  

   

   

config가 추가된 모습.

Next를 클릭해 다음 진행

   

   

   

Context root는 http://localhost/first/hello.do 이부분에 들어갈 것이기 때문에 간단하게 변경한다. 안 바꾸면My_First_Project가 된다. 물론 설정 파일을 변경해서 추후에 변경 가능하다. 

  

   

여기까지 끝 마치고 나면 아래와 같이 두개의 프로젝트를 보게 될 것이다.

Server는 Tomcat Server 추가 할 때 만들어진 것으로 Tomcat설정 파일들을 수정할수 있고, 다른 하나는 방금 만든Dynamic Web Project이다. 

  

   

Spring MVC를 이용해서 Hello Java를 찍기 위해서는 Spring Framework library들이 필요하다. 이런 Library들을 추가 하는 방법은 우리가 잘 알고 있듯이 아래처럼 lib에 추가하면 된다. 해당 파일을 copy해서 lib 폴더에 붙여 넣기 하면 된다. 

   

   

   

  web.xml

파일 위치 : /My First Project/WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5">

  <display-name>My First Project</display-name>

   

  <!-- ContextLoaderListener에서 사용할 환경 설정 파일로 이곳에 Bean들을 등록하게 된다. default name은applicationContext.xml이다. -->

 <!-- Service, DA Layer 의 모든 빈을 이곳에 등록한다.  -->

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/spring-config/myfirst-context.xml</param-value>

  </context-param>

  <listener>

    <display-name>Context Loader</display-name>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

   

     

  <!-- DispatcherServlet 설정, Front Controller, Facade Bean 역할을 한다.  -->

  <servlet>

    <servlet-name>dispatcherServlet</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!-- '/WEB-INF/' + servlet-name + '-context.xml' 이 default name 이다. 여기에서는 folder를 변경하기 위해서 해당 param을 선언했다.-->

    <!-- DispatcherServlet관련 내용을 설정 -->

    <init-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/spring-config/dispatcherServlet-context.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <!--dispatcherServlet을 사용할  url pattern을 선언한다. -->

  <servlet-mapping>

    <servlet-name>dispatcherServlet</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping> 

   

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

</web-app>

   

   

  dispatcherServlet-context.xml

파일 위치 : /My First Project/WebContent/WEB-INF/spring-config/ dispatcherServlet-context.xml

spring-config 폴더를 먼저 생성한다.

Spring-config 폴더에서 우클릭 -> New -> Spring Bean Configuration File 선택

 

   

   

dispatcherServlet-context.xml 입력 후 Next 

  

   

   

Beans, context, mvc 모두 3.0 선택 후 finish 

  

   

파일을 열어 아래와 같이 편집한다.

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

             xmlns:context="http://www.springframework.org/schema/context"

             xmlns:mvc="http://www.springframework.org/schema/mvc"

             xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd

                           http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd

                           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

   

 <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->

             <!-- Prefix와 surffix를 정해 뒀기 때문에 controller에서 View Resoler에게 정보를 줄때 해당 부분을 빼고 줄수 있다. -->

             <!-- View Resolver를 사용하기 때문에 consroller에서는 ModelAndView를 return하면 된다. -->

             <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

                           <property name="prefix" value="/WEB-INF/views/" />

                           <property name="suffix" value=".jsp" />

             </bean>

              

                

             <!-- Annotation handler mapping definition - DispatcherServlet이  특정 URL의 요청을 특정  Contoller에게 넘겨줘야 하는데 이른 mapping해주는 Handler Mapping - 이것도 default 이므로 생략 가능하다.-->

             <bean id="annotationHandlerMapping"            class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">

                           <property name="order" value="1" />

             </bean>

   

             <!-- Enables annotated POJO @Controllers - contoller의 method별로 url mapping이 가능해 진다. -  default Handler Adapter 이므로 등록이 필요하진 않다. -->

             <bean id="annotationHandlerAdaptor"               class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

                           <property name="synchronizeOnSession" value="true" />

             </bean>

             <!-- @Controller annotation을 scan할 package myapp 하위 이외의 곳은 scan하지 않는다. -->

        <!-- Controller(@Controller를 가진)를 scan할 위치  -->

             <context:component-scan base-package="com.alex.myapp">

             </context:component-scan>

              

   

              

             <!-- Controller가 필요 없이 jsp만 필요 할경우 사용 할 것이다. -->

             <bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

                <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

                           <property name="order" value="2" />

                           <property name="mappings">

                         <props>

                                      <prop key="/jquery/json_data1.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex3.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ex4.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/temp3.do">urlFilenameViewController</prop>

                                       

                                      <prop key="/jquery/jquery_ui1.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui2.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui3.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_ui4.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_board.do">urlFilenameViewController</prop>

                                      <prop key="/jquery/jquery_board_data.do">urlFilenameViewController</prop>       

                                      <prop key="/jquery/jquery_board2.do">urlFilenameViewController</prop>                                              

                                      <prop key="/jquery/autocomplete.do">urlFilenameViewController</prop>                                              

                                                                               

                                       </props>

                         </property>

            </bean>

                           <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

              

</beans>

  

   

   

  myfirst-context.xml

dispatcherServlet-context.xml 파일과 동일하게 빈 파일만 만들어 둔다.

   

   

  jsp  추가 하기

WEB-INF/views 아래 jsp들을 위치 시키면 된다.(dispatcherServlet-context.xml 참조)

/WEB-INF/views/hello/hello.jsp 파일 생성 아래와 같은 모양을 만든다. 

  

   

jsp 내용

   

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

        ${WellcomeText} 완성입니다.

 </body>

</html>

   

  controller java 추가 하기

아래와 같이 적당한 package를 구성하고 HelloController.java를 추가한다. 

  

   

HelloController.java 의 내용

package  com.alex.myapp.hello.controller;

   

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

   

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

   

/* @Controller 어노테이션에 의해서 controller 대상이 된다. */

@Controller

public class HelloController {

   

        /* AnnotationMethodHandlerAdapter  의해서 메소드별로 URL 매핑이 가능하다.*/

        /* 어노테이션에 의해 http://도메인/context-root/hello.do 일경우 아래 method 호추된다. */

        @RequestMapping("/hello.do")

        public ModelAndView hello(HttpServletRequest request, HttpServletResponse response ) {          

                  

               ModelAndView view = new ModelAndView();

               view.addObject("WellcomeText""Hello Java");

                

               /*

                  dispatcherServlet-context.xml View Resolver 설정 때문에 /WEB-INF/views/hello/hello.jsp  아닌 hello/hello 되는 것인다.

                              <beans:property name="prefix" value="/WEB-INF/views/" />

                              <beans:property name="suffix" value=".jsp" />

                */

               view.setViewName("hello/hello");

                

               return view;

                

        }

}

  

   

   

  Tomcat Server에 deploy하기

Server View에 보면 우리가 앞서 만들어 놓은 tomcat server가 보인다.

여기에서 우클릭->Add and Remove 

  

dialog에서 My First Project를 선택해 add를 한다.

그럼 아래 그림처럼 된다. 그 후 Finish한다. 

  

   

완료된 후 모습

   

Server Start 후

http://localhost:8080/first/hello.do 로 접속하면 Hello java를 볼 수 있다. 

  

   

   

실행을 했는데 404 Not found 에러가 발생한다면

아래 화면 처럼 Servers의 내가 추가한 Tomcat아래 있는 server.xml을 열어 해당 파일 맨 아래에 Context path가"/first"로 되어 있는지 확인한다. "/first"가 아니면 브라우져의 URL을 path에 맞추던지 path를 "/first"로 바꾸고tomcat을 restart 하면 된다. 

  

   

   

   

   

   

지금까지 Spring+Tomcat을 이용해 화면에 Hello java를 출력하는 환경을 구성해 봤다.

이 글에서는 Spring @MVC 한 사이클을 만들어 봤으니 가장 기초적인 환경 설정은 된 것이다. 엔터프라이즈 개발 환경을 구축하기 위해서는 iBatis, Spring Security, JMS, Transaction, MultipartRequest 등등 붙여야 할 내용이 무궁무진 하게 많다.

다음 글을 통해 하나씩 살을 붙여가도록 하겠다.

   

[출처] Spring @MVC - Hello Java 만들어 보기|작성자 Alex

Posted by linuxism
,