개발/Spring

[Spring MVC + Maven] Project 생성하기

신매력 2013. 9. 20. 19:32

맨날 시니어개발자분들이 만든 환경에서만 개발해봤지 혼자 해본적이 없어서

세팅을 해봤는데, 패키지 설계부터 뭘 어떻게 해야할지 막막했다.


프로젝트 만드는거에서부터 삽질을 했다  그래서 정리를 해보겠다.

(MAC환경에서 했으나 다를건 없을 것이다)




환경 세팅


1. STS 다운로드


STS에는 메이븐 플러그인이 기본으로 깔려있으므로 이걸로 설치.


http://spring.io/tools/sts/all 



2. Tomcat 다운로드


원하는 버전의 톰캣 다운로드. (나는 7을 받았음)


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





이제 본격적으로 프로젝트 생성하기



위에있는 동그라미 아이콘을 누른 후(Dashboard) Spring Project를 클릭한다.




아래와 같은 창이 뜨면, 프로젝트 이름 쓰고 Simple Spring Web Maven 을 선택하고 Finish 누름





그러면 이런 구조의 프로젝트가 생성이 되었다.

pom.xml에 보면 필요한 몇가지의 라이브러리들을 dependency 해놓은 것을 볼 수 있다.



이제 톰캣을 연동해보자.


Server창에서 우클릭 - New를 누르면 아래와 같은 창이 뜬다.

Server이름을 알아보기 좋게 바꾸고, 아까 다운받은 톰캣버전과 같은 것을 선택 후 Finish.





+ 여기서 중요한 것은.. 

새로 추가된 톰캣서버에 모듈을 추가해야되는데... 모듈이 없다고 나온다. 

이럴 때는 프로젝트 이름 우클릭 - Maven - Update Project... 를 누르면 해결된다.





위와 같은 작업 후에 모듈을 추가하면 추가 된다~





이제 Pen 프로젝트가 나타났으니 Add를 하고 Finish




생성된 서버를 더블클릭 한 후, Path와 모듈을 확인해보자.

Path가 /Pen으로 되어있으므로 / 로 바꾼다.


만약 /Pen 이외의 다른것들이 보인다면 Remove를 해주자. (에러의 원인임)




이제 스프링의 흐름을 따라 Hello World!!!를 찍어볼 차례다.


src/main/java 밑에 패키지랑 컨트롤러 하나를 만들어보자. 

/test 라는 URL로 호출되면 test.jsp 를 띄우겠다는 코드이다. 


webapp/WEB-INF/view/test.jsp도 하나 생성해두자. <h2>Hello World!!!</h2>도 써넣고.(요건 캡쳐안했음)





톰캣을 실행시켜보자.

아마 안될 것이다. 404 에러가 발생할 것이다.


web.xml에서 부르고 있는 mvc-config.xml을 열어서, 실행하려는 패키지를 스캔하도록 설정해놓아야한다. 주석에 써있듯이.

(인터넷 찾아보니까 이렇게하면 뭔가 문제가 있다고 하던데, 공부해야겠다.. 스프링은 알수록 어려움..)





저장하고 다시 실행하면 짠~ 드디어 Hello World!!!가 보인다 !










+ 난 안된다. 에러가 난다.!!! ㅠㅠ



이것때문에 아주 속터져 죽는줄 ㅋㅋ ContextLoaderListener Class not found...

이 에러는 설정이 잘못되었을 때, 또는 엉켰을 때 나는 에러이다.





해결법 1. 


Spring 관련 dependency가 잘못 되었을 수 있으므로, 

.m2/repository/org/springframework 밑에 있는 모든 것들을 삭제한다.



그런다음, 프로젝트 우클릭 - close project  한 다음 다시 open project 하면 

메이븐에서 다시 라이브러리들을 업데이트 한다.


이 방법으로 해결봤음 ㅋㅋ



해결법 2. 


멀쩡히 잘 돌아가던 프로젝트도 SVN으로 체크아웃 받은 후에 저런 에러 뜨는 경우가 있고, 

해결법1로도 안될 때가 있는데.. 그럴 때는


menu의 Project - clean

그리고 톰캣 서버에서 우클릭 후 clean 또는 clean tomcat work directory를 실행한다.


(이래도 안되면 체크아웃을 다시 받던가... 다시 만들어봐야함.....)