SPRING/스프링 MVC
HTTP 요청 맵핑하기 2부: URI 패턴 맵핑
JUMP개발자
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 인코딩을 사용할 때 할 때 불명확 함.