즉.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} 가 된다.
'Programming > Spring' 카테고리의 다른 글
[Spring] sitemesh 설정하기 (0) | 2014.03.12 |
---|---|
Spring3.0 기본 셋팅 (0) | 2013.01.16 |
Mybatis Mapper (0) | 2012.09.28 |
Spring Annotation - @Component, @Service, @Repository, @Controller (0) | 2012.09.28 |
@Qualifier (0) | 2012.09.28 |