본문 바로가기
스프링 부트/자바 웹을 다루는 기술

5.4 FirstServlet을 이용한 실습

by 989898 2024. 1. 17.

앞 절에서는 서블릿 기능과 각 생명주기 메서드 기능을 알아보았다. 이번에는 사용자 정의 서블릿을 실제로 만들어서 서블릿의 동작 과정을 실습해 보겠다.

 

다음은 서블릿을 만들고 실행하는 과정이다.

5.4.1 사용자 정의 서블릿 만들기

 

실제 웹 프로그래밍에서 사용되는 사용자 정의 서블릿은 HttpServlet 클래스를 상속받아서 만든다.

 

그리고 3개의 생명주기 메서드, 즉 init(), doGet(), destroy() 메서드를 오버라이딩해서 기능을 구현한다.

5.4.3 첫 번째 서블릿 만들기

 

우리가 만든 서블릿은 HttpServlet을 상속받고 3개의 생명주기 메서드를 차례로 구현한다. 각 메서드는 호출 시 메시지만 출력한다.

 

소스 코드를 작성했으니 이제 첫 번째 서블릿을 어떻게 실행하여 동작시키는지 알아보자.

5.4.4 서블릿 매핑하기

 

브라우저에서 서블릿 이름으로 요청하는 방법은 다음과 같다. 프로젝트 이름 뒤에 패키지 이름이 포함된 클래스 이름 전부를 입력한다.

pro05 프로젝트를 톰캣에 추가한 후 패키지 이름까지 포함된 서블릿 클래스 이름인 sec01.ex01.FirstServlet으로 요청해야 한다. 그런데 클래스 이름이 길어지면 입력하기가 불편해짐. 그리고 일반적으로 클래스 이름을 보면 그 클래스가 어떤 기능을 하는지 짐작할 수 있는데, 브라우저에서 버젓이 클래스 이름으로 입력하면 보안에도 좋지 않다. 따라서 지금은 이런식으로 사용하지 않고 서블릿 클래스 이름에 대응되는 서블릿 매핑 이름으로 실제 서블릿을 요청한다.

실제 서블릿 매핑을 보면 <servlet> 태그와 <servlet-mapping> 태그의 하위 태그에 <servlet-name> 태그가 공통으로 있다.

<servlet-name> 태그의 값 aaa <servlet> <servlet-mapping> 태그를 연결시켜 준다.

 

그러면 웹 브라우저에서  <url-pattern> 태그의 /first로 요청할 경우 aaa 값을 가지는 <servlet> 태그를 찾아 실제 서블릿인 sec01.ex01.FirstServlet을 실행한다.

그럼 지금부터 서블릿 매핑 형식을 실제 프로젝트에 적용해 보겠다.

 

1. pro05 프로젝트의 WebContent > WEB-INF 폴더를 클릭한 후 web.xml을 선택하여 연다.

 

2. web.xml에 <web-app> 태그의 하위 태그를 지우고 다음과 같이 서블릿 매핑을 작성한다.