일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 육아
- 부동산
- Programming
- Java
- Linux
- WebService
- 행복이
- 효민이
- Ant
- OS
- Swing
- Spring
- Vista
- WebLogic
- Eclipse
- 독서
- ThinkFree
- Programing
- 미국드라마
- Java5
- db
- 판매
- 책
- PSP
- Mac
- spring3.0
- 중고
- 요리
- php
- 이승철
Archives
- Today
- Total
Bitaholic
Spring 3.0 Request Mapping (Suffix Pattern, Path Variable) 본문
Computer/Spring
Spring 3.0 Request Mapping (Suffix Pattern, Path Variable)
Bitaholic 2010. 10. 20. 16:41스프링을 쓰면 Http Request를 적절한 클래스의 적절한 메소드로 연결하는(Mapping) 작업을 비교적 쉽게 할 수 있다. 여러가지 방법이 있지만 Java Annotation (@RequestMapping)을 이용해서 클래스 또는 메소드에다가 쓰면 해당 규칙에 맞는 Http Request가 그 메소드를 호출 할 수 있도록 해준다. 그 규칙은 Request URL, Request Header, Request parameter , Http method 조합으로 정해 주는데 Request URL은 ant 타입으로 쓸 수 있다. ( *, ** 를 쓸 수 있다)
ex1)
아래의 예는 http://host/context/user 로 오는 요청을 handlerUser(..) 메소드에 전달 해준다.
@RequestMapping("/user")
public void handleUser(...) {...}
public void handleUser(...) {...}
ex2)
아래의 예는 Header로 content-type이 text/*에 해당되고 /user로 요청만 메소드로 전달해준다.
@RequestMapping(value = "/user", headers="content-type=text/*")
Path Variable
Spring 3.0에서는 RESTful webservice를 지원하기 위해 path variable기능이 추가 되었다. 간단하게 설명하면 " /부서/이름" 이런 포맷의 REST요청을 URL을 파싱하지 않고 바로 메소드 인자로 받을 수 있는 기능이다.
아래와 같이 선언을 하면 각 URL의 부분들이 해당 인자로 매핑이 된다.
@RequestMapping(value="/{department}/{employee}")
public void handleMethod(@PathVariable String department, @PathVariable String employee) {...)
public void handleMethod(@PathVariable String department, @PathVariable String employee) {...)
Suffix Pattern
이때 DefaultAnnotationHandlerMapping 은 @RequestMapping에 자동으로 몇몇 접미어를 붙여서 ReqestMapping 리스트에 추가 한다. 즉 위와 같은 예에서는
- /{department}/{employee}
- /{department}/{employee}.*
- /{department}/{employee}/
위와 같은 RequestMapping을 자동으로 추가해 준다. 즉 /sales/thomas, /sales/thomas/, /sales/thosmas.add 와같은 URL로 자동으로 매핑이 된다. 이러한 패턴을 쓰기 싫으면 DefaultAnnotationHandlerMapping 에서 해당 옵션을 꺼주어야 한다. 스프링 설정 파일에서 다음과 같이 설정을 꺼줄 수 있다.
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="useDefaultSuffixPattern" value="false"/>
</bean>
<property name="useDefaultSuffixPattern" value="false"/>
</bean>
Comments