흐음.. 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("/game/users/{userId}")
public class CharacterInfoController {

@RequestMapping("/characters/{characterId}")
public String characterInfo(@PathVariable String userId,
@PathVariable int characterId, ModelMap model) {
model.addAttribute("userId", userId);
model.addAttribute("characterId", characterId);
return "game/character/info";
}
}

위의 코드처럼 클래스와 메소드에 각각 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

+ Recent posts