Spring Framework를 공부하다보니 Spring MVC 프로젝트를 만들게 됐다.
이론만 공부하지 않고 프로젝트 세팅부터 간단한 게시글까지 만들어 보기 위해 프로젝트를 생성해 보았는데 조금 복잡한 부분이 있어서 생성 방법을 잊더라도 빠르게 확인 할 수 있게 남겨보려고 한다.
IntelliJ Version
IntelliJ IDEA 2021.3.3 (Ultimate Edition)
1 Maven Project Created
- file -> new -> project
- Maven 선택
- Create from archetype 선택하지 않고 Next
(Java 21 버전을 생성하려 했으나 pom.xml이 공백으로 생성되어 17버전으로 선택)

2 Project name
- Name 작성
- GroupId 작성 권장
- GroupId : 최상위 패키지명 (ex. com.aaa)
- ArtifactId -> 1.name 과 동일 프로젝트 명
- Version
- 개발 버전 : SNAPSHOT
- 배포 버전 : RELEASE
- Finish

3 Add Framework
- Project 우클릭
- Add Framework Support 클릭

4 Spring Framework download
- Spring mvc 선택
- 따로 library가 없으므로 Download
- OK 클릭

5 사용하지 않는 lib 파일 삭제
- IntelliJ의 lib를 사용하지 않고 pom.xml에 의존성을 추가하여 사용할 것이기 때문에 lib삭제

6 pom.xml dependency 추가
- pom.xml에
<dependencies></dependencies>
를 추가
<dependencies></dependencies>
안에서 우클릭 후 Generate 클릭

- Dependency 클릭

- search for artifact의 검색창에 "org.spring" 검색
- spring-webmvc 확장
- Add Framework Support했을 때 Spring MVC 버전과 맞는 버전 선택 후 Add 클릭
- 저는 5.2.3.RELEASE 버전으로 Support 받아서 해당 버전으로 선택

- 2~4까지 동일 검색창에 "javax.servlet" 검색
- javax.servlet-api 선택 후 Add 클릭

- 위 그림에서 우측 상단 Maven 버튼 클릭
7 Project 구조 변경
- web 폴더를 src/main 으로 이동
- web을 webapp 으로 변경


3.Project 우클릭 Open Module Settings 클릭

- Modules클릭 -> Web클릭
- Web Resource Directories 경로 변경
- project/web -> 위 2번 webapp 경로로

- Artifacts에서 오른쪽 Available Elements에 springmvc 폴더에 있는 내용 전부를 선택 후 우클릭 해서 Put info /WEB-INF/lib 클릭


8 Tomcat 연동
- 우측 상단 Add Configuration 클릭

- 좌측 상단 + 클릭하여 톰캣 추가

- 우측 Configure 클릭
- Tomcat Home 경로 지정 후 OK클릭

- Deployment클릭 후 + 클릭

- Artifact 추가
- Application context : /springmvc_war_exploded -> / 변경 후 OK 클릭

- Tomcat을 실행하면 정상 동작하는 것을 볼 수 있다.

