Spring이용하는 HandlerMapping 종류이다.
추상클래스 : AbstractUrlHandlerMapping 을 구현하여 총 5개의 HandlerMapping가 구현되어 있다.

1) SimpleUrlHandlerMapping
URL과 Controller을 직접 맵핑해준다.
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true" />
<property name="mappings">
<props>
<prop key="/index.do">mainController</prop>
<prop key="/test/**/*">testController</prop>
</props>
</property>
</bean>
<bean name="mainController" class="com.mungchung.MainController" />
<bean name="testController" class="com.mungchung.TestController" />
2) BeanNameUrlHandlerMapping
URL과 Bean이름을 가지고 Controller 맵핑한다.
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
</bean>
<!-- index.do URL요청은 mainController 컨트롤러 이용함 -->
<bean name="index.do" class="com.mungchung.MainController"/>
<!-- test 디렉토리(하위 디렉토리 포함)의 모든 파일은 아래 컨트롤러 이용함 -->
<bean name="/test/**/*" class="com.mungchung.TestController" />
3) ControllerBeanNameHandlerMapping
빈의 아이디나 이름을 이용해 맵핑한다.
<bean id="test" class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"/>
@Component("test")
public class TestController implements Controller {
...
}
위와 같이 선언하면 /test URL에 맵핑해준다.
4) ControllerClassNameHandlerMapping
URL과 Controller 명을 일정한 규칙으로 맵핑함
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean class="com.mungchung.MainController" />
<bean class="com.mungchung.TestHelloController" />
위와 같이 설정하면
/main* 의 요청은 MainController에서 처리
/testHello* 의 요청은 TestHelloController에서 처리
예를 들자면 MainController에서 처리하는 URL의 예제는 아래와 같다.
/main.do
/maintest.do
/MAIN1234.html
위의 예제를 보면 알겠듯이 대소문자 구별 안하고 URL 맵핑처리 하는데 대소문자 구분이 필요하면
caseSensitive 속성을 정의해준다.
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="caseSensitive" value="true" />
</bean>
만약 URL에 특정 Path를 통해서 접속하게 하려면 pathPrefix 설정하면 된다.
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
<property name="caseSensitive" value="true" />
<property name="pathPrefix" value="/test" />
</bean>
이와 같이 하면 위에서 예시든 URL들이 아래와 같이 바뀐다.
/test/main.do
/test/maintest.do
/test/main1234.html
* MultiActionController을 이용하면 디렉토리 단위의 URL을 사용할수 있다.
관련 내용정리가 귀찮아서 괜찮은 사이트 있어서 링크로 대체한다.
http://www.mkyong.com/spring-mvc/spring-mvc-multiactioncontroller-example/
4) DefaultAnnotaitonHandlerMapping
@RequestMapping 어노테이션을 이용하여 요청을 처리할 컨트롤러를 구현한다.
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
@Controller
@RequestMapping("/main.do")
public class AnnotationSimpleFormController {
@RequestMapping(method = RequestMethod.GET)
public String doGet(ModelMap map) {
...
}
@RequestMapping(method = RequestMethod.POST)
public String doPost(HttpServletRequest request, BindingResult errors, ModelMap map) {
...
}
}
참고!!! HandlerMapping은 서로 섞어서 사용할수 있고 이 경우 우선순위를 줄 수 있다.
<bean id="handlerMapping1" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="order" value="1"/>
</bean>
<bean id="handlerMapping2" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="2"/>
</bean>