▶ 뭉충닷컴
 
mungchung.com login
Site Search
My Space
주절주절...
공부방
쥔장소개
Board
자유게시판
유용한 정보
자료실
Programming
강좌 & Articles
Spring 3.0
프로그래밍 Tip
   -ASP
   -PHP
   -JavaScript
   -HTML
   -Java/JSP
   -Database
   -Crystal Report
   -Visual Basic
   -이클립스
   -리눅스
   -기타
Windows API (VB)
Spread Sheet 7.0
컴퓨터활용 Tip
Other things
StarCraft 전략
StarCraft 문서
김용(金庸)
Son Q & Dieda

Spring의 HandlerMapping 종류및 사용방법

조회 수 5833 추천 수 0 2012.03.04 23:55:14

Spring이용하는 HandlerMapping 종류이다.

추상클래스 : AbstractUrlHandlerMapping 을 구현하여 총 5개의 HandlerMapping가 구현되어 있다.

 

01.png

 

 

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>

 

문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 Spring 3.0 게시판 뭉충닷컴 2011-08-07 4497
25 Spring Controller의 메서드에 사용될수 있는 파라미터 종류 뭉충닷컴 2012-11-01 7229
24 Spring에서 requestURL 가져올때 URL을 /WEB-INF/views/.. 로 가져오는 이유 뭉충닷컴 2012-10-31 7378
23 Spring의 어노테이션 정보 읽기 뭉충닷컴 2012-10-29 5726
22 Spring MVC 기본 흐름 file 뭉충닷컴 2012-10-23 6758
21 custom taglib 만들때 spring bean 사용하기 뭉충닷컴 2012-08-29 8690
20 STS에서 한글에 String literal is not properly closed by a double-quote 오류가 날 경우 file 뭉충닷컴 2012-07-03 4176
19 Spring @Transactional 어노테이션을 이용한 트랜잭션 예제 file 뭉충닷컴 2012-06-04 8269
18 Spring @Transactional 사용시 rollback이 안될 경우 뭉충닷컴 2012-06-03 13341
17 한글때문에 xml 파싱시 오류날 경우 (URI$MalformedURIException 오류) file 뭉충닷컴 2012-06-02 5346
16 maven에 ojdbc14 추가하기 뭉충닷컴 2012-06-01 5353
15 HandlerInterceptor 간단한 사용 예제 file 뭉충닷컴 2012-03-08 8962
14 Spring Template Project 이용시 maven 빌드를 제대로 못할경우 file [1] 뭉충닷컴 2012-03-07 6047
13 Spring에서 Quartz 이용하기 (스케줄이용방법) file [1] 뭉충닷컴 2012-03-06 13619
12 Spring AOP (Aspect Oriented Programming) 뭉충닷컴 2012-03-05 2693
» Spring의 HandlerMapping 종류및 사용방법 file 뭉충닷컴 2012-03-04 5833
10 maven을 이용해 배포(Deploy) 대상에 따라서 환경설정(resources) 다르게 적용하기 file [1] 뭉충닷컴 2012-03-03 36025
9 일반 Spring 프로젝트를 Web 프로젝트로 변경하기 file 뭉충닷컴 2012-03-03 4571
8 URL과 Controller 간단하게 연결해주는 HandlerMapping 처리 방법 뭉충닷컴 2012-03-03 4635
7 Spring에서 Session을 이용한 로그인 처리 예제 file [12] 뭉충닷컴 2012-03-02 64871
6 뷰 컨트롤러에서 ModelAndView 개체를 직접 생성하는 방법 뭉충닷컴 2012-03-01 7044
5 Root Application Context와 Servlet Context file 뭉충닷컴 2012-02-29 10492
4 STS의 Spring Template Project를 이용한 간단한 Spring MVC 웹 프로젝트 file [15] 뭉충닷컴 2012-02-29 13846
3 스테레오타입 어노테이션을 이용한 자동 빈 등록 file 뭉충닷컴 2012-02-28 2710
2 Spring에서 Bean 등록 여러가지 방법 뭉충닷컴 2012-02-28 4664
1 component:context-scan으로 설정되어있는 Bean들 확인하는 방법 file 뭉충닷컴 2012-02-24 3046