흐음.. RESTful 서비스의 URI 형태가 이런거였구나.
즉.xxxx/xxxx/info?user=id 형태의 url이 있다면
-->
xxxx/xxxx/info/user/id .. 뭐 이런것 처럼 파라미터가 uri에 포함되도록 하는 형태란다.
이걸 스프링3 에서 흉내?? 낼수 있는데 URI 템플릿 기능이란다.
1. 설정방법
방법은
@RequestMapping 어노테이션값으로 { 템플릿변수 } 를 사용한다.
@PathVariable 어노테이션을 이용해서 { 템플릿 변수 } 와 동일한 이름을 갖는 파라미터를 추가한다.
@Controller
public class CharacterInfoController {
@RequestMapping( "/game/users/{userId}/characters/{characterId}" )
public String characterInfo(@PathVariable String userId, @PathVariable int characterId,ModelMap model) {
model.addAttribute("userId",userId);
model.addAttribute("characterId",characterId);
....
}
RequestMapping 어노테이션에 변수를 포함하고 있다.
이들변수는 @PathVariable 어노테이션이 적용된 동일한 이름을 갖는 파라미터에 매칭된다.
즉
/game/users/ezsnotes/characters/sorcerer
하면 userId / characterId에 ezsnotes , sorcerer 가 들어간다.
만약 @PathVariable 어노테이션에 값을 주면 변수이름을 동일하게 하지 않고 지정할 수 있게 된다.
2. 추가 설정방법
@Controller
위의 코드처럼 클래스와 메소드에 각각 RequestMapping을 걸어놓게 되면?
메소드에 적용한 @RequestMapping 어노테이션의 값은 클래스에 적용한 @RequestMapping 어노테이션의 값을 기본경로로 쓰게 된다.
메소드에 적용된 어노테이션의 값은 /characters/{characterId} 인데 실제 매칭되는 값은 클래스에 적용된 어노테이션의 값을 포함한
/game/users/{userId}/characters/{characterId} 가 된다.
'IT > 스프링' 카테고리의 다른 글
Validator / Error interface .... in Spring (0) | 2012.01.16 |
---|---|
Ant 경로 패턴 in @RequestMapping (0) | 2012.01.16 |
URI 매칭.. (서블릿 맵핑) (0) | 2012.01.13 |
@ModelAttribute (2) | 2012.01.13 |
모델 생성.... (Model ) (0) | 2012.01.13 |