티스토리 뷰
Study/FastCampus
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 환경설정2 IntelliJ webapp
코딩하는 앤지 2023. 8. 9.728x90
반응형
어제 필요한 도구들을 설치했다면, 오늘은 IntelliJ IDEA에서 새 프로젝트 환경을 구성할 것이다.
1. IntelliJ IDEA 새 프로젝트 생성
새 프로젝트를 선택하여 'mvc-project' 이름의 프로젝트를 생성한다.
- Language: Java
- Build system: Gradle
- JDK: temurin 11
- Gradle DSL: Groovy
(Java 버전도 JDK와 같은 11버전으로 진행하였다.)
2. 초기 설정
- 프로젝트의 src > main > java > org.example > main.java 파일의 이름을 WebApplicationServer.java로 변경한다.
내가 작업하는 프로젝트의 경우 spring initializr를 통해 생성해서인지 MvcProjectApplication.java 파일이 생성되어 있다.
그렇기 때문에 WebApplicationServer.java를 새로 생성하고 메인 클래스 코드를 작성해 주었다.
package org.example;
public class WebApplicationServer {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
- 만약 org.example 패키지가 안 보인다면 패키지를 별도로 src > main > java 아래에 생성해 준다.
- WebApplicationServer를 embed Tomcat을 통해 만들 것이기 때문에 Tomcat과 관련된 의존성(dependency)을 설정한다.
- build.gradle 파일의 dependencies 아래에 코드를 추가한다.
implementation 'org.apache.tomcat.embed:tomcat-embed-core:8.5.42'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:8.5.42'
- 자바를 이용해 웹 애플리케이션을 만들기 위해서는 servlet이 필요함으로 servlet에 대한 의존성도 추가한다.
implementation 'javax.servlet:javax.servlet-api:4.0.1'
- servlet을 이용해 프로그래밍을 할 때 화면에서 확인하는 것이 편하기 때문에 jsp 의존성도 추가해 준다. (jsp는 지금은 거의 사용되지 않는다)
implementation 'javax.servlet:jstl:1.2'
- 또한 간단하게 로그를 출력할 수 있는 로그 관련 의존성을 추가한다.
implementation 'ch.qos.logback:logback-classic:1.2.3'
- 이후에 코끼리 버튼을 눌러주면 적용되며, 외부 라이브러리에서 추가된 것을 확인할 수 있다.
- 이러한 의존성은 mvn repository 사이트에서 검색 가능하다. (https://mvnrepository.com/)
- 버전을 선택하면 다음과 같은 창이 나오는데 Gradle(Short)을 선택하여 나온 코드를 복사 붙여 넣기 하면 된다.
3. 웹 애플리케이션
- WebApplicationServer.java 파일에 아래 코드를 추가한다.
private static final Logger log = LoggerFactory.getLogger(WebApplicationServer.class);
public static void main(String[] args) throws Exception {
String webappDirLocation = "webapps/"; // 톰캣의 루트 디렉토리
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080); // 톰캣을 8080 포트로 실행
// 8080으로 접속했을 때, 루트 디렉토리에서 파일을 확인할 것이란 의미
tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
log.info("configuring app with basedir: {}", new File("./" + webappDirLocation).getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}
- f2 > alt+enter를 통해 import를 하거나 import 할 요소들을 코드로 입력한다.
import org.apache.catalina.startup.Tomcat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
- main 메소드를 실행했을 때, 아래와 같은 에러가 생긴다면, 프로젝트 바로 아래 webapps 디렉토리를 추가한다.
- Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
- 여기서 에러가 났던 이유는 코드에서 톰캣의 루트 디렉토리를 webapps로 설정해 놓았기 때문이다.
String webappDirLocation = "webapps/";
- 톰캣이 정상적으로 작동하기 위해 추가 설정이 필요하다.
(1) 빌드 도구를 Gradle에서 IntelliJ IDEA로 변경한다.
- 파일 > 설정(ctrl+alt+s) > 빌드,실행,배포 > 빌드도구 > Gradle 로 들어가서
- 다음을 사용하여 빌드 및 실행(build and run using)과
- 다음을 사용하여 테스트 실행(run tests using)을 IntelliJ IDEA로 변경한다.
- ( 디폴트인 Gradle 보다 빠르기 때문에 변경하면 좋다. )
(2) 프로젝트 구조에서 컴파일 출력 경로를 변경한다.
- ctrl+alt+shift+s를 눌러 프로젝트 구조로 들어가서
- 프로젝트 설정 > 모듈 > mvc-project > main을을 누른 뒤,
- 경로(path)에서 모듈 컴파일 출력 경로를 out에서 webapps\WEB-INF로 수정한다.
- test도 마찬가지로 경로를 변경한다.
- 이후 WebApplicationServer를 실행한다면 webapps\WEB-INF 아래 WebApplicationServer가 빌드된 것이 들어간 것을 볼 수 있다.
- 이렇게 해야지만 톰캣이 해당 클래스를 실행할 수 있다.
- 추가적으로 톰캣의 application developer's guide를 확인해 보면, /WEB-INF/classes에 java 클래스 파일을 저장하라고 안내되는 것을 알 수 있다.
http://www.kbn.re.kr/docs/appdev/deployment.html
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 학점계산기, 음식주문 (0) | 2023.08.12 |
---|---|
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 객체지향 (0) | 2023.08.11 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 테스트코드 (0) | 2023.08.10 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 환경설정3 Docker Desktop (0) | 2023.08.10 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 환경설정1 (0) | 2023.08.08 |
댓글