복붙노트

[SPRING] 정규 표현식으로 봄 URI 템플릿 패턴

SPRING

정규 표현식으로 봄 URI 템플릿 패턴

안녕하세요 누군가가이 URI "http : // localhost : 8080 / test / user / 127.0.0.1 : 8002 : 8"과 @RequestMapping을 어떻게 일치시킬 수 있는지 알고 있습니다.

이 코드를 작성하려고합니다.

@RequestMapping(value = "/user/{id}", method = RequestMethod.GET,headers="Accept=application/xml" )
public void test(@PathVariable("id") String id) {
System.out.println(id);
return null;
}

하지만 문제는 ID를 인쇄 할 때 값이 : 127.0.0입니다. 어쩌면 뭔가가 worng일까요?

해결법

  1. ==============================

    1.SpEL 설명서를 참조하십시오 : http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/expressions.html

    SpEL 설명서를 참조하십시오 : http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/expressions.html

    다음과 같이하면됩니다.

    @RequestMapping(value = "/user/{id:.*}", method = RequestMethod.GET,headers="Accept=application/xml" )
    public void test(@PathVariable("id") String id) {
    
  2. ==============================

    2.Spring MVC에서 @ Configuration-style을 사용한다면, 다음과 같은 트릭을 수행 할 것입니다 :

    Spring MVC에서 @ Configuration-style을 사용한다면, 다음과 같은 트릭을 수행 할 것입니다 :

    @Configuration
    public class Api extends WebMvcConfigurationSupport {
    
        @Bean
        public RequestMappingHandlerMapping requestMappingHandlerMapping() {
            RequestMappingHandlerMapping mapping = super.requestMappingHandlerMapping();
            mapping.setUseSuffixPatternMatch(false);
            return mapping;
        }
    
    }
    

    보시다시피 RequestMappingHandlerMapping에서 useSuffixPatternMatch를 비활성화해야합니다.

  3. from https://stackoverflow.com/questions/9020444/spring-uri-template-patterns-with-regular-expressions by cc-by-sa and MIT license