좋지 않은 방법이지만, 지식이 전혀 없는 상태에서 인터넷 보고 해보기.
STS 설치
Eclipse 기반으로 만든 것으로 보임. spring.io 에서 다운로드 후 압축 풀면 끝.
프로젝트 생성
- File > New > Dynamic web project
WebContent 디렉토리 아래 index.html
파일 생성 후 body에 hello 넣기.
Run
무작정 Run
해보기. Choose an existing server 선택 후 실행.
브라우저에서 localhost
접속해보니 에러가 난다.
localhost:8080
해보니 Pivotal tc Server가 뜬다. 일단 서버 구동은 잘 되고 있다.
좀 더 인터넷 검색해보니 그 아래 프로젝트 명을 입력해줘야 한다고 한다.
http://localhost:8080/hello
여기서는 page 생성된 것을 확인.
Tomcat
여기저기 보니 spring
은 보통 tomcat
에 연동하는 것으로 보인다.
7.0 버전이 안정적이라는 것 같다. 다운로드 한다.
- 7.0.81 64bit windows zip 버전으로 받고
- 압축 풀고
- STS에서 Window > Preferences > Server > Runtime Environments > Add > Apache > Apache Tomcat v7.0 > Next > Browse > 설치한 경로 찾아주고 Finish
- File > New > Other > Server > Apache > Tomcat v7.0 Server
다음, Server perspective에서 Pivotal tc Server에 연결되어 있던 hello project를 끊고 Tomcat에 Add를 통해 연결하려 하였으나, 아래와 같은 에러메시지 발생.
"There are no resources that can be added or removed from the server."
새로 Project hello2
를 생성해본다. Target runtime
에서 Apache
를 선택하니 Dynamic web module version
이 3.0
으로 바뀐다.
Apache 7.0에서 3.1
을 지원하지 않는 것인가 싶다.
아래 사이트에서 확인해보니 저게 아마 Servlet version
인가 싶다.
https://tomcat.apache.org/whichversion.html
실행 후, http://localhost:8080/hello2 에 가보니 잘 나온다.
다른 방법으로 해보기
Project 생성 시 New Spring Legacy Project
를 사용하여 만들어보자.
Project name을 적당히 넣고 Templates에서 Spring MVC Project
를 선택 후 Next.
패키지명에 적당히 com.my.hello
를 넣고 완료.
실행해보면 세 개의 에러가 난다.
|
으음… pom.xml
을 열고. 아래 3.1.1
을 4.3.10
으로 변경한다.
|
다음은 Java를 1.8
로 바꾼다. (PC 환경에 맞춰서…)
- 생성한 Project를 우클릭 > Properties
- Project Facets > Java를 1.8로 바꾼다.
여기까지의 조치로 세 개의 에러 중 두 개는 없어졌는데 마지막 것이 남아있다.
아래와 같이 설정하여 에러는 모두 없어졌으나 페이지는 아직 보이지 않는다.
- 생성한 Project를 우클릭 > Properties
- Project Facets > 우측의 Runtimes 탭 > Apache Tomcat v7.0 선택 > Apply and Close
한참 고생하다가 다른 사이트에서 MAVEN
에 대한 언급이 있었으나 STS를 사용하면 그냥 지원하는 줄 알고 설치를 안 했었다.
그래서 MAVEN
문제인가? 싶어서 설치해 보았다.
여기에서 에서 MAVEN
을 받아서 압축을 풀고, 경로를 환경 변수의 PATH에 추가해준다.
잘 설치되었는지 확인을 위해서는 cmd
를 다시 열고 mvn -version
을 입력해보면 된다.
하지만 이게 문제가 아니었다.
한참 헤매다가 Console쪽에서 Tomcat의 에러로 보이는 것들을 찾았다.
|
이에 대해 아래의 글들을 찾았다.
- http://burucodegallery.blogspot.kr/2013/12/unable-to-process-jar-entry.html
- https://open.egovframe.go.kr/cop/bbs/selectBoardArticle.do?bbsId=BBSMSTR_000000000013&nttId=13261
jstl-1.2.jar
를 검색해보니 https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 를 찾았고 JSTL
에 대해서는 이런 사이트를 찾았고
그래서 이 경로의 파일을 바꿔치기 했다.
C:\Users\사용자\.m2\repository\javax\servlet\jstl\1.2
이 에러는 해결되었다. 다음 에러를 보자.
|
이건 https://blog.outsider.ne.kr/559 를 따라서 고쳤다.
Servers
perspective에서Tomcat server
더블 클릭 후Server Option
의Publish module contexts to separate XML files
를 체크.
|
이 문제도 아래 사이트를 참고하여 해결했다.
pom.xml
에 log4j-slf4j
에 대한 내용을 dependency에 추가하는 것이다.
여기까지 하고 프로젝트 재시작을 해보니 페이지가 뜬다.
남은 TOMCAT 에러 로그는 놔두기로 한다.
페이지는 잘 떴으나 이제 깨지는 문자가 있다. 나름 인코딩을 UTF-8
로 다 맞췄는데 뭐가 문제일까 싶었다.
아래 사이트를 따라 web.xml
에 아래 코드를 추가해보았다.
|
그래도 안 된다.
그 다음 servlet-context.xml
에 아래 코드를 추가해 보라는 글을 보고 따라해본다.
|
이것도 안 된다.
다음은 home.jsp
파일에 아래 코드를 추가해본다.
|
이건 된다. 한글이 나온다.
jsp 파일에 직접 추가해주는 것 만으로 위의 web.xml
, servlet-context.xml
에서의 삽질은 필요하지 않다.
참조
- https://www.slideshare.net/ssusera97034/the-way-to-setting-the-spring-framework-for-web
- http://boxfoxs.tistory.com/334
- http://all-record.tistory.com/156
- http://myeonguni.tistory.com/1211
- https://stackoverflow.com/questions/21499695/spring-mvc-http-status-404
- https://stackoverflow.com/questions/25590027/spring-mvc-http-status-404-error