본문 바로가기
Spring Boot/스프링 부트로 배우는 자바 웹 개발

서블릿 설정, 서블릿 내부 동작

by 코리늬 2018. 7. 9.

2.1 서블릿 시작하기

- 서블릿은 JVM 기반에서 웹 개발을 하기 위한 명세이자 API다

- 서블릿은 Java EE에 포함된 스펙 중 하나로 자바에서 HTTP 요청과 응답을 처리하기 위한 내용들을 담고있다.


2.1.1 서블릿 설정

- 그래들(Gradle)을 이용해 서블릿을 이용한 개발 환경을 설정할 수 있다.

- 그래들은 메이븐(Maven), 엔트와 같은 빌드 도구다.

- JAR파일은 build.gradle 파일에 추가하면 사용할 수 있다.


2.2 서블릿 내부 동작

2.2.1 서블릿의 생명주기

- 서블릿은 자신만의 생명주기를 가지고 있고, 웹 어플리케이션 컨테이너에서 콘텍스트가 초기화되면 생명주기가 시작된다.

- 서블릿의 생명주기는 초기화, 서비스, 소멸의 3단계로 구성되어 있다.

초기화 : 로드한 서블릿의 인스턴스를 생성하고 리소스를 로드, 클래스 생성자의 초기화 작업과 동일한 역할

서비스 : 클라이언트의 요청에 따라 호출한 메소드를 결정

소멸 : 서블릿 언로드, 언로드는 런타임 오류가 발생하거나 서블릿 컨테이너가 종료되었을 때 발생


2.1.1.1 그래들을 이용한 서블릿 설정

- 필요한 라이브러리를 mvnrepository.com 에서 다운받아 build.gradle 파일에 추가한다.


2.2.1.1 서블릿 초기화와 init 메소드

- init 메소드는 초기화를 담달하는 역할을 수행하는 메소드다.

- HttpServlet은 추상 클래스인데 일반적으로 서블릿을 만들 때는 HttpServlet을 상속받아서 만든다.

- init 메소드는 초기화에 대응되는 메소드이므로 한 번만 호출이 된다.(그 결과 init call이 한 번만 출력된다)

- URL 매핑은 WebServle 어노테이션(annotation)으로 작성한다.


톰캣으로 실행했더니

위와 같은 결과가 출력되었다.

- 초기화 시점에 init 메소드가 호출되므로 브라우저를 새로고침해도 출력결과가 반복되지 않는다.

- 서블릿 3.0 이후 버전부터는 XML 없이 서블릿과 URL을 매핑할 수 있다.

기존 web.xml 파일의 일부분을 URL과 매핑하려면

이와 같은 방식을 사용해야 했다.

XML과 동일한 역할을 하도록 어노테이션의 name속성을 추가해준다.


name과 urlPatterns을 지정해준다. Patterns의 s는 복수형으로 하나의 서블릿을 다수의 URL에 매핑할 수 있다. 여러개를 지정할 때는 콤마를 사용해 구분한다.

init메소드의 한 번만 초기화 되는 성격을 이용해 초기화 시 파라미터를 전달하고 싶은 경우 servletConfig를 사용한다.


위 소스코드처럼 servletConfig.getInitParameter를 이용해 web.xml 또는 WebInitParam 어노테이션의 정보를 서블릿 초기화 시 전달 할 수 있다.

'Spring Boot > 스프링 부트로 배우는 자바 웹 개발' 카테고리의 다른 글

스프링 XML 설정  (0) 2018.07.25
세션  (0) 2018.07.12
필터와 쿠키  (0) 2018.07.12
서블릿 활용  (0) 2018.07.11
개발 환경의 변화와 자바  (0) 2018.07.09

댓글