• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@WebServlet의 name을 지정해 줬는데 언제 사용하나요?

21.07.01 12:31 작성 조회수 254

5

@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param")

requestParamServlet 은 언제 사용되어 지나요?

답변 1

답변을 작성해보세요.

9

David님의 프로필

David

2021.07.03

안녕하세요. 지현명님, 공식 서포터즈 Taewon David Hwang입니다:)
.

예전에 @WebServlet이 없을 때에는 아래와 같이 web.xml을 통해 서블릿을 설정했었습니다.

.

<web-app>

  <servlet>

    <servlet-name>HelloWorld</servlet-name>

    <servlet-class>servletexample.createHelloWorldExample

      </servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>HelloWorld</servlet-name>

    <url-pattern>/HelloWorldExample/*</url-pattern>

  </servlet-mapping>

</web-app>

.

그런데 @WebServlet이 추가되면서 굳이 서블릿 name을 사용할 필요가 없어졌습니다.

web.xml에서 서블릿을 지정해줄 때에는 서블릿 name과 서블릿 class 명시해줬습니다.

그리고 해당 서블릿에 할당될 url pattern을 추가할 때 url pattern이 어떤 서블릿에 속하는지 식별하기 위해 서블릿 name을 사용했습니다.

그러나 @WebServlet은 사용되어질 서블릿 class에 붙여서 사용하기 때문에 굳이 서블릿 name을 명시해줄 필요가 없어졌기 때문에 선택사항이 되었습니다.

내부적으로는 @WebServlet의 name 속성을 따로 명시하지 않으면 해당 클래스의 이름을 name 속성으로 사용합니다.

.

@WebServlet은 WebServletHandler에 의해 처리되는데 이때 handler가 @WebServlet의 name 속성을 사용하여 BeanDefinition을 만들게 됩니다.

.

감사합니다.

참고

* WebServletHander https://www.baeldung.com/spring-servletcomponentscan#under-the-hood

* Optional Attributes of @WebServlet https://docs.oracle.com/javaee/6/tutorial/doc/bnafu.html