-
Notifications
You must be signed in to change notification settings - Fork 0
지찬우 5주차 학습 정리
- JDK 17
- Gradle 8.5
dependencies {
...
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.1.0'
}
-
$CATALINA_HOME
: 톰캣의 특정 인스턴스 디렉토리 -
$CATALINA_BASE
: 따로 설정하지 않으면$CATALINA_HOME
와 동일
웹 애플리케이션은 $CATALINA_HOME/webapps
에 배포
- Document root: JSP 파일, HTML 파일, Java 클래스 및 이미지와 같은 모든 애플리케이션 리소스가 있는 웹 애플리케이션의 최상위 디렉토리
- Context path: 서버 주소와 관련된 위치를 나타내며 웹 애플리케이션의 이름을 나타냄
-
WAR: web archive의 약어로, 웹 애플리케이션 디렉토리 계층 구조를 ZIP 형식으로 패키징하는 파일의 확장자
- WAR 파일을 배포한 후 Tomcat은 파일 압축을 풀어 webapps 디렉토리의 모든 프로젝트 파일을 프로젝트 이름을 딴 새로운 디렉토리에 저장
Apache Tomcat 다운로드 - https://tomcat.apache.org/
#CATALINA_HOME/bin/startup
에 있는 시작 스크립트 실행만으로 Tomcat 서버 시작
Windows는 startup.bat
, Unix 기반 OS는 startup.sh
Tomcat 설치 디렉토리에 read/write 권한 확인하기
startup.sh
를 실행하고 http://localhost:8080
으로 접속하였을 때 Tomcat 랜딩 페이지가 보인다면 성공!
init()
메서드는 한 번만 호출
servlet 인스턴스가 존재하지 않으면 웹 컨테이너는 아래의 단계를 수행
- servlet 클래스 로드
- servlet 클래스의 인스턴스 생성
-
init()
메서드를 호출해 초기화
init()
메서드가ServletException
을 던지거나 웹 서버에 설정한 시간 이내에 반환하지 않으면 서블릿 컨테이너는 서블릿을 서비스에 배치할 수 없다.
void init(ServletConfig config) throws ServletException;
init()
메서드가 성공적으로 완료된 후에만 호출
컨테이너는 HTTP 요청을 처리하기 위해 service() 메서드를 호출하고 HTTP 메서드(GET, POST, PUT, DELETE 등)를 확인해 doGet(), doPost(), doPut(), doDelete() 등의 메서드를 적절히 호출
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
서블릿 서비스를 중단하기 위해 서블릿 컨테이너에 의해 호출
서블릿의 서비스 메서드 내 모든 스레드가 종료되거나 timeout된 후에만 호출. 컨테이너가 destroy()
를 호출한 후에는 서블릿에서 service()
메서드를 다시 호출하지 않음
void destroy();
-
./gradlew build
커맨드로 war 파일 빌드 - 빌드된 war 파일을
$CATALINA_HOME/webapps
로 이동 - 컨텍스트 루트를 xxx-1.0-SNAPSHOT에서
/
로 변경-
$CATALINA_HOME/conf/server.xml
의 HOST 태그 아래에 추가<Context path="/" docBase="xxx-1.0-SNAPSHOT"></Context>
-
재시작
-