티스토리 뷰

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를 새로 생성하고 메인 클래스 코드를 작성해 주었다.

자바 클래스 생성
자바 클래스 생성 1
자바 클래스 이름 설정
자바 클래스 생성 2
MvcProjectApplication.java 생성
메인 클래스 코드 작성

package org.example;

public class WebApplicationServer {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • 만약 org.example 패키지가 안 보인다면 패키지를 별도로 src > main > java 아래에 생성해 준다.

패키지 생성
패키지 생성 1
패키지 생성 이름 설정
패키지 생성 2

  • 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'

의존성 코드

  • 이후에 코끼리 버튼을 눌러주면 적용되며, 외부 라이브러리에서 추가된 것을 확인할 수 있다.

의존성 코드 검색 사이트

  • 버전을 선택하면 다음과 같은 창이 나오는데 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로 수정한다.

main 출력 경로 변경 전
변경 전
main 출력 경로 변경 후
변경 후

  • test도 마찬가지로 경로를 변경한다.

test 출력 경로 변경 후
test 변경 후

  • 이후 WebApplicationServer를 실행한다면 webapps\WEB-INF 아래 WebApplicationServer가 빌드된 것이 들어간 것을 볼 수 있다.

빌드된 목록

  • 이렇게 해야지만 톰캣이 해당 클래스를 실행할 수 있다.
  • 추가적으로 톰캣의 application developer's guide를 확인해 보면, /WEB-INF/classes에 java 클래스 파일을 저장하라고 안내되는 것을 알 수 있다.
    http://www.kbn.re.kr/docs/appdev/deployment.html

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/43z0P6S

 

 

#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완

728x90
반응형
댓글