Skip to content

spring handler #
Find similar titles

Structured data

Category
Programming

서론. #

spring/filter에서 Interceptor가 HandlerMethod를 사용한다고 언급한 바 있다. 또한 spring/dispatcher-servlet에서 웹 요청이 HandlerMapping을 통해 Controller와 흐름이 연결되는 것을 확인 할 수 있다. Handler는 어떤 개념이고 어떻게 사용하는지 알아보고자 한다.

본론. #

Handler #

웹 요청을 처리(Handle)한다고 해서 Handler라고 부른다. 그런데 사실 우리는 Spring MVC에서 Controller가 웹 요청을 처리한다고 배웠다. 그럼 Handler와 Controller는 무슨 차이인가라는 생각을 할 수 있다. DispatcherServlet은 @Controller 어노테이션 이외에도 여러 종류의 객체로 웹 요청을 처리할 수 있다. 웹 요청을 처리하는 객체를 큰 범위에서 우리는 Handler라고 부르는 것이다. 따라서 Controller도 일종의 Handler인 셈이다.

HandlerMapping #

웹 요청 URL과 Controller를 연결해 주는 설정이다. 만약 HandlerMapping이 Null을 리턴하면 DispatcherServlet은 그 유명한 404에러 코드를 응답하는 것이다. HandlerMapping은 다양한 방식(BeanNameUrlHandlerMapping, SimpleUrlHandlerMapping, ControllerClassNameHandlerMapping, DefaultAnnotationHandlerMapping 등)으로 설정될 수 있다. 각각의 HandlerMapping은 혼용할 수 있으니 우선순위(order)를 설정할 수 있다. 우선순위가 높은 HandlerMapping을 먼저 수행하며 Null을 리턴할 경우 다음 우선순위의 HandlerMapping을 이용한다.

HandlerMapping의 종류 #

HandlerMapping의 종류에 대해서는 Spring의 HandlerMapping 종류및 사용방법 - 뭉치닷컴 에서 예제와 함께 잘 설명하고 있으므로 링크로 갈음한다.

Spring MVC에서 HandlerMapping의 사용 #

설정을 사용하면 RequestMappingHandlerMapping과 SimpleUrlHandlerMapping이 등록된다. RequestMappingHandlerMapping은 @Controller 적용 빈 객체를 Handler로 사용하는 HandlerMapping이다. SimpleUrlHandlerMapping은 < mvc:default-servlet-handler >, < mvc:view-controller >, < mvc:resources > 태그를 통해 등록되는 HandlerMapping이다. URL과 Handler 객체를 매핑한다. < mvc:annotation-driven > 태그가 등록 하는 RequestMappingHandlerMapping이 < mvc:default-servlet-handler > 태그가 등록하는 SimpleUrlHandlerMapping의 우선순위보다 높다. 앞서 언급한 바와 같이 웹 요청이 들어오면 RequestMappingHandlerMapping을 먼저 확인하고 그 다은에 SimpleUrlHandlerMapping을 확인한다.

참고출처 #

관련 키워드 #

Interceptor, DispatcherServlet, Controller, HandlerMapping, Handler

Suggested Pages #

0.0.1_20140628_0