본문 바로가기
개발/Spring

[gradle] 서블릿 Hello World - Gradle 프로젝트 생성 및 실행

by 윤호 2021. 7. 7.
  • Mac
  • intelliJ
  • JDK 1.8.0

1. 프로젝트 생성

생성하고 나면 다음과 같은 폴더구조를 갖습니다.

 

2. build.gradle 수정

build.gradle의 코드를 다음과 같이 수정합니다. (전체코드)

buildscript{
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.akhikhl.gretty:gretty:+'
    }
}
apply plugin: 'java'
apply plugin: 'war'

apply plugin: 'org.akhikhl.gretty'

apply plugin: 'idea'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    jcenter()
}

compileJava.options.encoding = 'UTF-8'

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.7'
    testCompile 'junit:junit:4.12'
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
}

gretty{
    httpPort = 8080
    contextPath = '/'
    servletContainer = 'jetty9'
}


def webappDir = "$rootDir/src/main/webapp"

idea{
    module{
        downloadSources = true
        downloadJavadoc = false
        inheritOutputDirs = false
        outputDir = file("${buildDir}/classes/main")
    }
}

오른쪽 상단 버튼을 눌러 빌드해줍니다.

 

3. initServlet 클래스 생성

src/main/java 디렉토리에 initServlet 클래스를 생성합니다

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(
        name = "initServlet", urlPatterns = {"/init"},
        initParams = {@WebInitParam(name = "siteName", value = "jpub")}
)
public class InitServlet extends HttpServlet{
    private String myParam = "";

    public void init(ServletConfig servletConfig) throws ServletException{
        System.out.println("init call");
        this.myParam = servletConfig.getInitParameter("siteName");
        System.out.println("입력받은 사이트 명은" + myParam + "입니다.");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("Hello World");
    }
}

4. 프로젝트 실행

터미널에서 다음 명령어로 서버를 실행합니다. (윈도우는 sh 빼고 입력)

sh gradlew appStart

브라우저에서 localhost:8080/init 으로 접속합니다.

 

 

Exception in thread "Thread-192" java.lang.IllegalStateException 에러 해결법

Exception in thread "Thread-192" java.lang.IllegalStateException: The configuration :runtimeClasspath was resolved from a thread not managed by Gradle.

 

다음 명령어로 gradlew wrapper 버전을 변경합니다. (윈도우는 sh 빼고 입력)

sh gradlew wrapper --gradle-version=4.10.3

reference

댓글