web.xml에 여러 서블릿을 설정할 경우 복잡해진다는 단점이 있다.
이러한 단점을 각 서블릿 클래스에 기호(@)를 이용해서 서블릿 표시를 해주면 훨씬 가독성이 좋아지는데 이처럼 소스 코드에 직접 기능을 설정하는 방법을 애너테이션이라고 한다.
톰캣 7 버전부터는 서블릿 매핑을 web.xml 외에 애너테이션을 이용해 서블릿 클래스에 직접 설정할 수 있는 기능이 추가되었다.
두 가지 버전 다 많이 사용되지만 애너테이션을 이용하여 효율적으로 서블릿들을 매핑하는 방법을 알아보자.
애너테이션이 적용되는 클래스는 반드시 HttpServlet 클래스를 상속받아야 하고 애너테이션을 이용해 서블릿을 매핑하기 위해 @WebServlet을 이용하면 된다.
패키지 우클릭 -> New -> Servlet 선택
Class name을 설정한 후 Next > 클릭
URL mappings의 기본으로 설정되어 있는 /ThirdServlet을 선택 후 Edit... 클릭
/third로 수정후 OK 클릭
수정된 것을 확인한 후 Next > 클릭
Constructors from superclass 체크를 해제한 후 오버라이딩 할 생명주기 메서드를 선택한다.
init, destroy, doGet, doPost를 체크한 후 Finish 클릭
애너테이션에 수정한 매핑 이름 third가 추가된 것을 확인할 수 있다.
이후에는 다음과 같이 메시지 출력 기능을 추가하여 코드를 작성한다.
package sec01.ex01;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 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() {
System.out.println("ThirdServlet destroy 메서드 호출");
}
/**
* @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 doPost 메서드 호출");
}
}
그리고 브라우저에서 http://localhost:8090/pro01/third 로 요청해보자.
주의할 점은 매핑 이름을 설정할 때 이미 사용된 다른 매핑 이름과 중복되지 않도록 주의해야 한다.
예를 들어 /first라는 매핑 이름이 이미 사용중이라면 다음과 같은 오류 메시지가 출력되며 서버를 실행할 수 없다.
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
서블릿의 데이터베이스 연동하기 (0) | 2023.02.14 |
---|---|
서블릿의 비즈니스 로직 처리 방법 (0) | 2023.02.14 |
서블릿 동작 과정 (0) | 2023.02.14 |
FirstServlet을 이용한 실습 (0) | 2023.02.14 |
서블릿의 생명주기 메서드 (0) | 2023.02.14 |