Gradle : Java EE 웹 애플리케이션 구축: 예제, 방법
Java EE 웹 애플리케이션을 처음 만들 때는 솔직히 꽤 어렵고 복잡해 보일 수 있어요. 하지만 Gradle을 사용하면 놀랍게도 그 모든 과정이 훨씬 수월해진답니다. 이번 글에서는 쿠폰 애플리케이션을 만들어 보면서 프로젝트 구조를 설정하고, 배포까지 단계별로 안내해 드릴게요. 자, 함께 시작해 볼까요?
Gradle로 시작하는 간단한 웹 개발
Gradle의 가장 큰 장점은 뭐니 뭐니 해도 웹 애플리케이션을 설정하고 빌드하는 과정을 정말 간단하게 해준다는 거예요. 이번 튜토리얼에서는 사용자가 링크를 클릭해서 쿠폰을 받고, 이를 입력해 할인을 받을 수 있는 간단한 쿠폰 애플리케이션을 만들어 볼 거예요. 이렇게 하면 복잡하지 않으면서도 중요한 개념을 다 익힐 수 있어서, 초보자들에게 딱 좋은 프로젝트랍니다.
Gradle을 선택한 이유는 뭘까요? 사실 Gradle은 많은 과정을 자동화해 주기 때문에 좋아요. 예를 들어 WAR 파일을 생성하거나 의존성 관리를 할 때 정말 편리하거든요. Gradle의 war
플러그인을 사용하면 Java 플러그인의 기능을 확장해 애플리케이션을 .war 파일로 패키징할 수 있고, 이를 Tomcat이나 Jetty 서버에 바로 배포할 수 있어요. 어렵지 않죠?
Gradle CLI로 웹 애플리케이션 프로젝트를 생성하는 방법은 이렇게 하면 돼요:
- 명령어 창 열기 – Gradle 프로젝트가 있는 디렉터리로 이동하거나 새로운 폴더를 만드세요.
- 새 프로젝트 생성하기 –
gradle init
명령어를 실행해 새 프로젝트를 초기화하세요. 언어와 구조를 선택하라는 메시지가 나오면 Java(옵션 3)를 선택하면 돼요.
Gradle이 알아서 필요한 모든 폴더와 build.gradle
파일, 소스 폴더, 리소스를 생성해 줍니다. 정말 간단하죠? 필요에 따라 설정을 조금씩 수정하면서 나만의 프로젝트로 만들어 봅시다.
쿠폰 애플리케이션을 구조화
이제 본격적으로 쿠폰 애플리케이션을 만들어 볼 건데요, 구조를 잘 정리하는 게 중요해요. 그래야 나중에 작업할 때 편하고, 코드도 깔끔해지거든요. Gradle을 쓰면 이 작업도 아주 쉽게 할 수 있어요.
폴더 구조를 잡아보자
Gradle로 프로젝트를 생성하면 src/main/java
같은 소스 코드 폴더와 src/test/java
같은 테스트 파일 폴더가 만들어질 거예요. 이제 이걸 조금 손봐 볼게요:
- 기본 파일 삭제 – Gradle이 기본으로 만들어 주는
App.java
파일이 있어요. 이건 필요 없으니까 지워 주고, 관련된 테스트 파일도 같이 삭제해 주세요. - WebApp 디렉터리 추가하기 – 웹 애플리케이션을 위해
src/main
아래에webapp
이라는 폴더를 추가해 주세요. HTML과 JSP 파일은 여기다가 넣을 거예요. Gradle이 이 폴더에 있는 파일들을 .war 파일로 빌드할 때 자동으로 배포해 줄 거예요.
첫 번째 HTML 페이지 만들어 보기
이제 간단하게 인덱스 페이지를 만들어 볼까요? 이 페이지는 사용자가 쿠폰을 받을 수 있는 첫 번째 화면이 될 거예요. 자, 따라 해보세요:
- 새 파일 생성 – 선호하는 텍스트 편집기를 열고
index.html
이라는 HTML 파일을 만드세요. 이 파일은src/main/webapp
에 저장하면 됩니다. - 내용 추가하기 – 환영 메시지와 쿠폰을 받을 수 있는 링크를 추가해 볼게요. 예를 들어:
<!DOCTYPE html>
<html>
<head>
<title>Coupon Application</title>
</head>
<body>
<h1>Welcome to the Coupon Application!</h1>
<a href="/getCoupon">Click here to get your coupon!</a>
</body>
</html>
정말 간단하죠? 이렇게 해서 사용자가 첫 화면에서 쿠폰을 받을 수 있도록 해볼 거예요.
서블릿으로 핵심 기능 구현하기
이 애플리케이션의 핵심은 서블릿이에요. 사용자의 요청을 처리하고 쿠폰을 제공하는 역할을 하죠. 이 서블릿은 GET과 POST 요청을 모두 처리할 수 있어요. 자, 이제 서블릿을 만들어 볼까요?
- 서블릿 스켈레톤 다운로드 – 빠르게 시작하고 싶다면 제공된 리소스에서
CouponServlet
을 다운로드해 주세요. 물론, 도전해 보고 싶다면 직접 만들어도 좋아요! - 프로젝트에 추가하기 – 서블릿 파일을
src/main/java/com/bharath/gradle
에 추가하세요. 이 서블릿은 사용자가 쿠폰을 요청할 때 필요한 작업을 처리하게 될 거예요.
다음은 서블릿 코드의 간단한 예시입니다:
@WebServlet("/getCoupon")
public class CouponServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 쿠폰 생성 로직
response.getWriter().println("Here is your coupon: SAVE20");
}
}
이렇게 간단하게 쿠폰을 제공하는 서블릿을 만들어 봤어요. 나중에 doGet
과 doPost
메서드를 추가하고, 적절한 애너테이션을 다루는 과정을 더 자세히 볼 거예요. 이 서블릿은 쿠폰 코드 생성, 검증, 그리고 할인 계산을 맡게 돼요.
Gradle로 WAR 파일 만들어 보기
Gradle의 장점 중 하나는 바로 .war 파일을 쉽게 만들 수 있다는 점이에요. build.gradle
에 war
플러그인을 추가하면 프로젝트를 웹 애플리케이션으로 변환해 배포 준비를 마칠 수 있답니다.
WAR 플러그인 추가하기
build.gradle
파일을 다음과 같이 수정해 주세요:
plugins {
id 'java'
id 'war'
}
이렇게 플러그인을 추가하면, 프로젝트 빌드 시 자동으로 WAR 파일이 생성되고 이를 Tomcat 같은 Java EE 서버에 쉽게 배포할 수 있게 됩니다.
Gretty 플러그인으로 쉽게 로컬에서 실행하기
개발을 더 편리하게 하기 위해 Gretty 플러그인을 사용할 수 있어요. 이 플러그인은 외부 서버 설정 없이도 Gradle 빌드의 일부로 애플리케이션을 실행할 수 있게 해주거든요.
build.gradle
에 다음을 추가해 주세요:
plugins {
id 'org.gretty' version '4.0.0'
}
gretty {
contextPath = '/'
servletContainer = 'tomcat9'
}
Gretty 플러그인을 사용하면 gradle appRun
명령어로 내장된 Tomcat 서버에서 애플리케이션을 바로 실행할 수 있어요. 이렇게 복잡한 배포 과정 없이 바로 애플리케이션을 확인할 수 있으니 정말 편리하답니다!
Gradle과 Java EE에 대한 내 경험
처음 Java EE와 Gradle을 접했을 때는 정말 혼란스러웠어요. 폴더 구조나 설정들이 너무 복잡하게 느껴졌거든요. 하지만 이렇게 소규모 프로젝트를 진행하면서 Gradle에 점점 익숙해졌어요. 작업을 작은 단위로 나누는 것이 정말 중요한 것 같아요—이번 프로젝트처럼요. 프로젝트 구조를 정리하고 간단한 페이지를 만들고, 서블릿을 통해 요청을 처리하는 과정이 Java EE 개념을 복잡하지 않게 익히는 데 많은 도움이 됐어요.
처음 Gretty 플러그인을 써서 프로젝트를 성공적으로 실행했을 때의 성취감은 아직도 잊지 못해요. 단 한 줄의 명령어로 로컬에서 프로젝트가 실행되는 걸 보는 건 정말 기분 좋은 일이었죠. Gradle의 유연성과 시간 절약 효과에 다시 한 번 감탄하게 됐어요.
마무리하며
이번 튜토리얼에서는 Gradle을 사용해 Java EE 웹 애플리케이션을 설정하고, 기본 폴더 구조를 만들고, 필요한 HTML과 JSP 페이지를 작성하고, 서블릿 기능을 추가하는 과정을 다뤘어요. 그리고 war
와 gretty
같은 Gradle 플러그인이 얼마나 개발자에게 도움이 되는지도 살펴봤죠. 다음 파트에서는 build.gradle
파일을 더 커스터마이징하고, 애플리케이션에 비즈니스 로직을 추가하는 과정을 볼 거예요.
Gradle을 빌드 도구로 사용하면 Java 웹 개발이 훨씬 자동화되고 단순화되며, 훨씬 강력해집니다. 약간의 연습만 더해지면, 더 빠르게 더 많은 작업을 처리하며 깔끔하고 효과적인 코드를 작성하는 데 시간을 더 투자할 수 있을 거예요.