
전통적인 방식
과거에 자바로 웹 애플리케이션을 개발할 때는 먼저 서버에 톰캣 같은 WAS(웹 애플리케이션 서버)를 설치했다. 그리고 WAS에서 동작하도록 서블릿 스펙에 맞추어 코드를 작성하고 WAR 형식으로 빌드해서 war 파일을 만들었다. 이렇게 만들어진 war 파일을 WAS에 전달해서 배포하는 방식으로 전체 개발 주기가 동작했다.
이런 방식은 WAS 기반 위에서 개발하고 실행해야 한다. IDE 같은 개발 환경에서도 WAS와 연동해서 실행되도록 복잡한 추가 설정이 필요하다.
최근 방식
최근에는 스프링 부트가 내장 톰캣을 포함하고 있다. 애플리케이션 코드 안에 톰캣 같은 WAS가 라이브러리로 내장되어 있다는 뜻이다. 개발자는 코드를 작성하고 JAR로 빌드한 다음에 해당 JAR를 원하는 위치에서 실행하기만 하면 WAS도 함께 실행된다.
쉽게 이야기해서 개발자는 main() 메서드만 실행하면 되고, WAS 설치나 IDE 같은 개발 환경에서 WAS WAS와 연동하는 복잡한 일은 수행하지 않아도 된다.
톰캣 설치
자바 17 버전 또는 그 이상을 설치하고 사용하자. 스프링 3.0을 사용하는데 자바 17이 최소 요구 버전입니다.
https://tomcat.apache.org/download-10.cgi
Apache Tomcat® - Apache Tomcat 10 Software Downloads
Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi
tomcat.apache.org
- tomcat 설치
- bin 이동
- "chmod 755 *" 명령어 실행
- "startup.sh" 명령어 실행 시, start tomcat이라는 로그가 보일 것이다.
- 만약 문제 발생 시, 로그를 보자(logs/catalina.out 파일에 적혀있다)
- "Address already in use" 문제 발생 시 포트를 사용 중인 것으로 "lsof -i :8080" 명령어로 사용 중인 프로세스 id를 찾아 "kill -9 프로세스 id" 명령어로 죽이거나, 설정파일(/conf/server.xml) 파일에서 포트를 변경하자
프로젝트 설정
build.gradle
plugins {
id 'java'
id 'war'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
//서블릿
implementation 'jakarta.servlet:jakarta.servlet-api:6.0.0'
}
tasks.named('test') {
useJUnitPlatform()
}
- id 'war' : 톰캣 같은 웹 애플리케이션 서버(WAS) 위에서 동작하는 WAR 파일을 만들어주는 플러그인이다.
- jakarta.servlet-api : 서블릿을 사용할 때 필요한 라이브러리이다.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index html</title>
</head>
<body>
<p>index html</p>
</body>
</html>
- /src/main 하위에 webapp 이라는 폴더를 만들어 index.html 파일을 생성했다
TestServlet
/**
* http://localhost:8080/test
*/
@WebServlet(urlPatterns = "/test")
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("TestServlet.service");
resp.getWriter().println("test");
}
}
- Test용 서블릿을 만들어서 service코드를 오버라이딩 했다.
- /test 로 요청이 오면 이 서블릿이 실행된다.
- "TestServlet.service"를 로그에 출력한다.
-
test를 응답한다. 웹 브라우저로 요청하면 이 서블릿이 실행되고 화면에 test 가 출력되어야 한다.
-
'스프링 부트(핵심 원리와 활용)' 카테고리의 다른 글
| Ch01. 웹 서버와 서블릿 컨테이너 - 스프링 MVC 서블릿 컨테이너 초기화 지원 (0) | 2023.03.03 |
|---|---|
| Ch01. 웹 서버와 서블릿 컨테이너 - 스프링 컨테이너 등록 (0) | 2023.03.03 |
| Ch01. 웹 서버와 서블릿 컨테이너 - 서블릿 컨테이너 초기화 (0) | 2023.03.03 |
| Ch01. 웹 서버와 서블릿 컨테이너 - 톰켓 설정 (0) | 2023.03.02 |
| Ch01. 웹 서버와 서블릿 컨테이너 - WAR 빌드와 배포 (0) | 2023.03.01 |