인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

지현명님의 프로필 이미지
지현명

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

HTTP 요청 데이터 - GET 쿼리 파라미터

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

작성

·

373

5

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

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

답변 1

9

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

예전에 @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

지현명님의 프로필 이미지
지현명

작성한 질문수

질문하기