스프링 프레임워크(33) HandlerMapping

넙데데맨·2022년 7월 8일
0

초기설정


스프링 프레임워크 MVC 기능 수행 과정

web.xml

DispatcherServlet 관련 설정 해주기

DispatcherServlet

HandlerMapping, ViewResolver, component-scan, bean, resources 등 설정

HandlerMapping

DispatcherServlet으로 들어온 모든 요청을 Controller로 위임처리하는 설정
BeanNameUrlHandlerMapping,DefaultAnnotationHandlerMapping,RequestMappingHandlerMapping는 단일 사용 시 Default로 설정되어 있어 다른 HandlerMapping 클래스를 함께 사용하는 것이 아니면 일부러 선언할 필요는 없다.

BeanNameUrlHandlerMapping

어노테이션 사용 URL과 일치하는 이름 갖는 빈의 이름을 Controller로 매핑

	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean name="/userName.do" class="com.myspring.javaweb.HomeController">

URL/userName.do 이면 HomeController로 요청 위임

DefaultAnnotationHandlerMapping

어노테이션을 사용해 url과 controller 매핑

	<bean class="org.springframework.web.servlet.handler.DefaultAnnotationHandlerMapping"/>
    <context:component-scan base-package="com.myspring.javaweb"/>

RequestMappingHandlerMapping

어노테이션을 사용해 url과 controller 매핑
DefaultAnnotationHandlerMapping과 사용법이 거의 동일
1. <mvc:annotation-driven/>

  1. 직접 빈으로 등록

여기부터 사용을 위해 설정해줘야하는 HandlerMapping이다.

ControllerClassNameHandlerMapping

URL과 일치하는 클래스 이름을 갖는 빈을 Controller로 사용한다.
이 때 suffix인 Controller를 제거한 나머지 이름의 소문자로 url mapping 한다.

	<bean class="org.springframework.web.servlet.handler.ControllerClassNameHandlerMapping"/>
    <bean name="/userName.do" class="com.myspring.javaweb.HomeController">

URL/home*이면 HomeController로 요청 위임

SimpleUrlHandlerMapping

URL 패턴에 매칭되는 지정 Controller를 사용(복수 지정 가능)

	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    	<property name="mappings">
        	<props>
            	<prop key="/home">HomeController</prop>
              	<prop key="/emp">EmpController</prop>
        </property>
    </bean>

ControllerBeanNameHandlerMapping

빈의 아이디, 이름을 통해 매핑한다.

	<bean id="test" class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"/>

	@Component("test")
    public class TestController implements Controller{}
profile
차근차근

0개의 댓글