[Servlet] 서블릿 매핑하기(web.xml, 애너테이션)

토끼는 개발개발·2022년 2월 10일
1

Web

목록 보기
7/7
post-thumbnail
post-custom-banner

1. web.xml에서 서블릿 매핑하기

web.xml에서 <servlet>태그와 <servlet-mapping>태그를 이용해 서블릿을 매핑한다.
<servlet-name> 태그의 값 aaa와 bbb가 <servlet><servlet-mapping>을 연결시켜 준다.

  • <servlet> : 브라우저에서 요청하는 매핑 이름에 대해 실제로 실행하는 서블릿 클래스를 설정하는 태그
  • <sevlet-name> : <servlet><servlet-mapping>을 연결 시켜주는 태그
  • <servlet-class> : 브라우저에 요청하는 매핑 이름에 대해 실제로 기능을 수행하는 서블릿 클래스
  • <servlet-mapping> : 브라우저에서 요청하는 논리적인 서블릿을 설정
  • <url-pattern> : 클라이언트가 요청하는 논리적인 서블릿 이름

▶ 매핑 실습

먼저SecondServlet.java로 서블릿 클래스를 하나 생성했다.

SecondServlet.java에는 위와 같이 자바 코드를 작성했다.
HttpServlet을 상속받고 3개의 생명주기 메서드를 구현했으며 각 메서드는 호출 시 메시지만 출력하도록 작성했다.

web.xml을 통해 서블릿을 매핑하고, 서블릿 매핑 이름인 /second로 웹브라우저에서 요청해보았다.

이클립스 콘솔에 각각의 메서드가 호출되면서 메시지가 출력되었다.

맨 처음 브라우저에서 /second로 요청하면 최초의 요청이므로 SecondServlet 클래스의 init()을 호출해 초기화한 후 메모리에 로드되어 doGet() 메서드를 호출하여 서비스를 한다.

이 후 다른 부라우저에서 동일한 서블릿 매핑 이름인 /second로 요청하면 미리 메모리에 로드된 SecondServlet 클래스 서블릿이 재사용되므로 init()은 호출하지 않고 doGet()메서드만 호출되어 서비스한다.

출력 결과를 보면 init()은 최초에 한번만 호출하고, 이후에는 doGet()메서드만 호출되는 것을 확인할 수 있다.

(서블릿의 자세한 동작 과정을 알고싶다면 이곳을 클릭!)




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

에너테이션이란?
애너테이션은 소스 코드에 추가하여 사용할 수 있는 메타데이터(데이터를 위한 데이터)의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. 간단히 말하면 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 제공하는 것이다.

여러 서블릿을 web.xml에 설정할 경우 복잡해진다는 단점이 있다. 따라서 각 서블릿 클래스에 기호(@)를 이용해서 서블릿 표시를 해주면 훨씬 가독성이 좋아진다.

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

@webServlet("/서블릿매핑이름")
public class ThirdServlet extends HttpServlet {
	... // 애너테이션을 이용해서 만드는 서블릿 클래스는 반드시 HttpServlet을 상속받아야 한다.
}

▶ 자바에서 제공하는 표준 애너테이션


▶ 매핑 실습

new -> Servlet

클래스 이름으로 ThirdServlet을 입력하고 Next클릭

서블릿 매핑이름을 /third로 해주었다. 수정을 원할시 우측의 Edit을 통해 수정할 수 있다.

오버라이딩할 생명주기 메서드를 추가하고 Finish.

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


다음과 같이 코드를 작성했다. 위의 web.xml 매핑 실습에서 처럼 각 메서드는 호출되면 메시지를 출력한다.

이제 웹 브라우저에서 서블릿 매핑 이름 /third로 요청해보겠다.

이클립스 콘솔에 각각의 메서드가 호출되면서 메시지가 출력되었다.

참고로 애너테이션을 사용할 때는 매핑 이름이 다른 매핑 이름과 중복되지 않도록 주의해야 한다.

profile
하이 이것은 나의 깨지고 부서지는 기록들입니다
post-custom-banner

0개의 댓글