-
HTTP 요청 맵핑하기 2부: URI 패턴 맵핑SPRING/스프링 MVC 2021. 6. 20. 16:10
요청 식별자로 맵핑하기
- @RequestMapping은 다음의 패턴을 지원합니다.
- ?: 한 글자 (“/author/???” => “/author/123”)
- *: 여러 글자 (“/author/*” => “/author/keesun”)
- **: 여러 패스 (“/author/** => “/author/keesun/book”)
@Controller public class SampleController { @RequestMapping(value = "/hello", method = {RequestMethod.GET}) @ResponseBody public String hello() { return "hello"; } @RequestMapping(value="/hello/?") @ResponseBody public String hello2() { return "hello?"; } @RequestMapping(value="/hello/*") @ResponseBody public String hello3() { return "hello*"; } @RequestMapping(value="/hello/**") @ResponseBody public String hello4() { return "hello**"; } }
클래스에 선언한 @RequestMapping과 조합
- 클래스에 선언한 URI 패턴뒤에 이어 붙여서 맵핑합니다.
@Controller @RequestMapping(value = "/hi") public class SampleController2 { @RequestMapping(value = "", method = {RequestMethod.GET}) @ResponseBody public String hello() { return "hi"; } @RequestMapping(value="/?") @ResponseBody public String hello2() { return "hi?"; } @RequestMapping("/{name:[a-z]+}") // 정규식에 해당하는 패턴을 name으로 받는다. @ResponseBody public String hello(@PathVariable String name) { return "hello " + name; } }
정규 표현식으로 맵핑할 수도 있습니다.
- /{name:정규식}
패턴이 중복되는 경우에는?
- 가장 구체적으로 맵핑되는 핸들러를 선택합니다.
URI 확장자 맵핑 지원
● 이 기능은 권장하지 않습니다.
(스프링 부트에서는 기본으로 이 기능을 사용하지 않도록 설정 해 줌)
- 보안 이슈 (RFD Attack)
- URI 변수, Path 매개변수, URI 인코딩을 사용할 때 할 때 불명확 함.
'SPRING > 스프링 MVC' 카테고리의 다른 글
HTTP 요청 맵핑하기 4부: 헤더와 매개변수 (0) 2021.06.26 HTTP 요청 맵핑하기 3부: 미디어 타입 맵핑 (0) 2021.06.26 요청 맵핑하기 1부 : HTTP METHOD (0) 2021.06.20 기타 WebMvcConfigurer 설정 (0) 2021.06.19 HTTP 메시지 컨버터 : XML (0) 2021.06.19