- IntelliJ에서 진행한다.
1. Maven 프로젝트 생성
- [New Project] -> [Maven Archetype] 선택 후
- Name 설정 (프로젝트 이름)
- JDK 버전 설정
- Archetype은 maven-archetype-webapp 선택
- 정상적으로 완료되면 아래와 같은 화면이 나온다.
2. pom.xml dependency 설정
- pom.xml 파일에 아래의 내용을 추가해준다.
<properties> <org.springframework-version>5.1.9.RELEASE</org.springframework-version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies>
- IntelliJ에서는 pom.xml에 설정을 해놓으면 자동으로 해당 라이브러리를 다운받는다.
- reload를 해준다.
- IntelliJ가 우측 상단에 위의 버튼을 띄워준다.
- 정상적으로 완료되면 아래와 같이 라이브러리가 다운된다.
3. WebApplicationInitializer 구현 - 코드 기반의 웹 애플리케이션 설정(SpringServletContainerInitializer)
-
src/main 아래에 java 디렉토리 생성 후 com.example.myproject 패키지를 추가한다.
- myproject 디렉토리 아래에 MyWebApplicationInitializer 클래스와 config 디렉토리를 생성하고, config 디렉토리 아래에 DispatcherConfig 클래스를 생성한다.
- MyWebApplicationInitializer에 아래의 코드를 작성한다.
public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) { AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext(); dispatcherContext.register(DispatcherConfig.class); ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(dispatcherContext)); dispatcher.addMapping("/"); dispatcher.setLoadOnStartup(1); } }
- DispatcherConfig에 아래의 코드를 작성한다.
@Configuration @ComponentScan(basePackages = "com.example.myproject") @EnableWebMvc public class DispatcherConfig implements WebMvcConfigurer { // 뷰 리졸버(ViewResolver)를 설정하기 위한 메소드이다. // 이 메소드는 컨트롤러에서 반환된 문자열 기반의 뷰 이름을 실제 뷰 구현으로 변환하여 렌더링을 수행할 수 있도록 해준다. // @RestController만 사용한다면 해당 메소드를 오버라이드할 필요가 없다. @Override public void configureViewResolvers(ViewResolverRegistry registry) { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); registry.viewResolver(resolver); } }
- (SpringServletContainerInitializer 관련 참고)
- spring-web JAR 파일의 /META-INF/services 경로에 jakarta.servlet.ServletContainerInitializer 파일이 있고, SpringServletContainerInitializer 클래스가 적혀있다.
- spring-web JAR 파일의 /org/springframework/web 경로에 SpringServletContainerInitializer 클래스와 WebApplicationInitializer 인터페이스가 있다.
4. 테스트를 위한 컨트롤러와 기본 페이지 작성
- myproject 디렉토리 아래에 HelloController 클래스를 생성하고 아래의 코드를 작성한다.
@Controller public class HelloController { @GetMapping("/hello") public String hello() { return "home"; } }
- src/main/webapp/WEB-INF 아래에 views 디렉토리를 생성하고, views 디렉토리 아래에 home.jsp 파일을 생성하고 아래의 내용을 작성한다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> Hello Page ! </body> </html>
5. Tomcat 설정
- war 파일을 만들고, 이것을 서버에 복사해서 배포하는 과정이 번거로운데, IntellJ나 이클립스 같은 IDE는 이 부분을 편리하게 자동화해준다.
- Intellij에서 Tomcat plugin은 Ultimate 버전에서 사용할 수 있다.
- Community 버전에서는 Smart Tomcart와 같은 Tomcat 관련 플러그인을 설치해서 사용해야 한다.
-
Tomcat 설치 (참고)
- Smart Tomcat 플러그인 설치
- [Settings]의 [Plugin]에 들어가서 Smart Tomcat 설치한다.
- [Settings]의 [Plugin]에 들어가서 Smart Tomcat 설치한다.
- IntelliJ 우측 상단의 [Current File] -> [Edit Configurations] 클릭
- 좌측 상단에 + 버튼 눌러서 Smart Tomcat 선택하고, 아래와 같이 설정
- Tomcat server : 설치되어 있는 Tomcat 폴더를 선택
- Context path : / 로 설정
6. Tomcat 실행 후 확인
- 브라우저에서 http://localhost:8080/hello 로 들어가서 확인해보자.
참고 자료
https://www.inflearn.com/questions/120816/tomcat-server%EB%93%B1%EB%A1%9D-%EC%8B%9C-configuration%EC%97%90-tomcat%EC%9D%B4-%EC%97%86%EC%96%B4%EC%9A%94 https://velog.io/@youjung/Intellij-IDEA-Community-Edition%EC%97%90%EC%84%9C-Tomcat-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 https://blog.naver.com/leejunga-0409/220738921894