ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 인코딩을 사용할 때 할 때 불명확 함. 

     

     

Designed by Tistory.