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

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

Web

목록 보기
7/7
post-thumbnail

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
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글