프로그래밍 언어/자바 웹

애너테이션을 이용한 서블릿 매핑

· 코딩마이데이

애너테이션을 이용해 서블릿을 매핑하려면 @WebServlet을 이용하면 됩니다. 그리고 애너테이션이 적용되는 클래스는 반드시 HttpServlet 클래스를 상속받아야 합니다.

 

@WebServlet 사용 방법

(서블릿 클래스 위에 선언)
@WebServlet("/서블릿매핑이름");
</>

<코드> 애너테이션을 이용한 서블릿 매핑 예
@WebServlet("/third")
public class ThirdServlet extends HttpServlet {
    ...
}

 

애너테이션을 이용한 서블릿 매핑 실습

1. sec01.ex01 패키지를 선택하고 마우스 오른쪽 버튼을 클릭한 후 New > Servlet을 선택합니다.

New > Servlet 선택

 

2. 클레스 이름으로 ThirdServlet을 입력하고 Next를 클릭합니다.

클리스 이름으로 ThirdServlet을 입력 후 Next를 클릭

 

3. 우선 기본 URL mapping 이름을 검색한 후 매핑 이름을 수정하기 위해 Edit...를 클릭합니다.

 

매핑 이름을 수정하기 위해 Edit... 클릭

 

4. 서블릿 매핑 이름을 /third로 수정하고 OK를 클릭합니다.

매핑 이름을 /third로 수정

 

5. 매핑 이름이 수정된 것을 확인한 후 Next를 클릭합니다.

매핑 이름 수정 확인 후 Next 클릭

 

6. Constuctors from superclass 옵션 체크박스의 체크를 해제한 후 오버라이딩할 생명주기 메서드를 추가합니다. 기본값으로 설정된 상태에서 initdestory, doGetm doPost에 체크하고 Finish를 클릭합니다.

생명주기 메서드 오버라이딩

 

7. 애너테이션에 수정한 매핑 이름이 추가된 것을 확인할 수 있습니다.

추가된 매핑 이름 /third 확인

 

8. serialVersionUID는 서블릿 클래스의 직렬화를 위해 이클립스에서 자동으로 생성된 상수인데 삭제해도 됩니다. 그리고 메서드 안에 자동으로 생성된 주석이나 기능은 삭제한 후 메시지 출력 기능을 추가합니다.

package sec01.ex01;

import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Servlet implementation class ThirdServlet
 */
@WebServlet("/third")
public class ThirdServlet extends HttpServlet {

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		System.out.println("ThirdServlet init 메서드 호출");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ThirdServlet doGet 메서드 호출");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ThirdServlet destory 메소드 호출");
	}
}

 

9. 이클립스에서 애너테이션을 이용하여 서블릿 매핑을 설정했으니 톰캣을 중지했다가 재실행한 다음 웹 브라우저에서 실행한 다음 웹 브라우저에서 서블릿 매핑 이름으로 요청해 보겠습니다.

  • http://localhost:8090/pro05/third

웹 브라우저 서블릿 요청 결과

 

애너테이션을 사용할 때는 매핑 이름이 이미 사용된 다른 매핑 이름과 중복되지 않도록 주의해야 합니다.

다음은 ThirdServlet.java의 /third라는 매핑 이름을 이미 사용 중인 /first로 직접 수정한 후 톰캣을을 재실행했을 때 오류 메시지가 출력되는 경우입니다.

에너테이션으로 설정한 매핑 이름이 web.xml의 매핑 이름과 중복되는 경우
중복된 매핑 이름을 설정한 경우 발생하는 오류