IntelliJ, Maven | Spring MVC 프로젝트 생성 및 배포(war) 파일 생성
DNO_story
2022. 9. 27. 12:45
오늘은 인텔리제이로 스프링 MVC 프로젝트를 생성하고, 배포 파일까지 만들어보겠습니다.
먼저, 인텔리제이 실행 후 'Create New Project'를 클릭한 뒤 'Maven'을 선택합니다. SDK 버전 확인 후 (없다면 설치해주셔야 합니다.) archetype은 선택하지 않고, 'NEXT'를 클릭합니다. [Tip] 다른 사람들과 협업을 하는 경우 SDK 버전을 동일하게 맞춰주셔야 합니다.
프로젝트 이름, 저장 위치를 확인한 후 'FINISH'를 클릭합니다. 'GroupId'는 그대로 두셔도 되고, 원하시는 대로 변경하셔도 됩니다. (예. org.example / org.spring.project 등)
'FINISH'를 선택했다면 다음과 같은 화면을 볼 수 있습니다.
이제 프레임워크를 추가해야 합니다. 프로젝트 우클릭 후 'Add Framework Support...'를 선택합니다.
좌측에 뜨는 여러가지의 프레임워크 중 'Spring MVC'를 선택합니다.
인텔리제이에서 자동으로 추가 가능한 버전이 뜨는 것을 볼 수 있습니다. (Spring MVC-5.2.3 .RELEASE)
다음과 같은 창이 뜨면 'Artifacts' > 'Available Elements'에 '프로젝트 이름' 열기 > 하단에 뜬 모든 파일을 선택해 오른쪽 마우스 클릭 > 'Put into /WEB-INF/lib' 선택 > 'APPLY', 'OK'를 클릭합니다.
자, 이제 프로젝트 설정 부분은 끝났습니다. 본격적으로 코드를 작성해봅시다.
컨트롤러 생성을 위해 자신의 프로젝트 패키지 가장 하단에서 '오른쪽 마우스 클릭' > 'New' > 'Java Class' 를 선택한 후 클래스 이름에 'HomeController'를 입력 후 엔터를 누릅니다.
'HomeController'가 생성된 것을 볼 수 있으며 아래와 같이 코드를 입력해줍니다.
package com.web.spring;
//자신의 패키지 url
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "index";
}
}
이제 화면 상에 보여지는 view 파일을 생성해야 합니다.
앞서 'dispatcher-servlet.xml'을 생성할 때 view의 url을 '/WEB-INF/views/"로 설정했기 때문에 'HomeController'에서 리턴 값으로 설정한 index는 해당 url 밑에 있어야 합니다. (예. /WEB-INF/views/index.jsp)
'web' > 'WEB-INF' 오른쪽 마우스 클릭 > 'New' > 'Directory' 클릭 후 'views' 이름의 디렉토리를 생성해줍니다.
'views' 디렉토리가 생성되었다면 'views' 오른쪽 마우스 클릭 > 'New' > 'JSP/JSPX' 를 클릭하여 'index' 이름의 jsp 파일을 생성합니다.
"Hello World!!!"를 출력하기 위해 'index'를 수정했으며 코드는 다음과 같습니다.
'FIX' 를 클릭하면 다음과 같은 창이 뜨며 'Application context'를 '/'로 설정해준 뒤 'APPLY' > 'OK'를 클릭합니다.
아까와는 다르게 'Configuration'에 'Tomcat'이 설정되어 있는 것을 볼 수 있습니다. 'Run' 버튼을 클릭합니다.
자동으로 크롬 창이 뜨며 jsp에 입력한 내용이 잘 출력됩니다!
Tip. 현재 url이 'localhost:8080'으로 되어있죠? 이유는 앞서 설정에서 url을 '/'로 맞춰주었기 때문입니다. 이것을 '/main' 등으로 바꿔주면 기본 로딩 url이 'localhost:8080/main'으로 설정됩니다. 하지만 이때 controller에서도 '/main'에 해당하는 매핑이 있어야 한다는 점 잊지마세요!