Spring 3부터 RESTful URI처리를 위해 @RequestMapping이 URI Template을 지원하도록 기능을 추가하였고, URI Template에 포함된 변수 값을 추출할 수 있도록 @PathVariable이라는 새로운 Annotation을 추가했다.
다음은 @PathVariable을 사용한 예이다.
@RequestMapping(value = "/movies/{movieId}/edit", method = RequestMethod.GET) public String get(@PathVariable String movieId, Model model) throws Exception { Movie movie = this.movieService.get(movieId); // 중략 return "restwebViewMovie"; }'/movies/MV-00001'와 같은 URI로 요청이 들어왔을 때, 위의 get 메소드가 처리하게 되고 'MV-00001' 값은 'movieId' 입력 Argument에 바인딩된다.
아래와 같이 변수명을 지정하여 사용하거나 여러개의 변수를 사용할 수도 있다.
@RequestMapping(value = "/movies/{movie}/posters/{poster}", method = RequestMethod.GET) public String get(@PathVariable("movie") String movieId, @PathVariable("poster") String posterId, Model model) throws Exception { Movie movie = this.movieService.get(movieId); // 중략 return "restwebViewMovie"; }
'/movies/*/posters/{posterId}'와 같이 Ant-style의 경로에도 사용할 수 있고, URI Template의 변수를 String이 아닌 다른 타입의 입력 Argument로도 바인딩 가능하다.
@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); } @RequestMapping("/plans/{date}") public void get(@PathVariable Date date) { // 중략 }예로 '/plans/2010-09-05' URI로 들어온 요청은 위의 메소드가 처리할 것이고, '2010-09-05'는 date 입력 Argument에 Date 타입으로 바인딩 될 것이다.
--------------------------------------------------------------------------------------------
@ResquestMapping 으로 url 매핑시 동적인 매핑에 사용하면 유용하게 쓰일것 같다.
@ResquestMapping시 경로에 /conf/{path} 사용한 뒤
@PathVariable String path로 메소드 파라미터로 받으면 알아서 해당 url로 매핑이 된다.
'spring' 카테고리의 다른 글
XStream (0) | 2012.03.15 |
---|---|
XStream XML (0) | 2012.03.15 |
@Controller, @RequestMapping - Annotation in Spring(어노테이션을 사용한 컨트롤러 구현) (0) | 2012.03.15 |
@RequestMapping 어노테이션을 이용한 요청 매핑 설정 (0) | 2012.03.15 |
URI Template (0) | 2012.03.15 |