복붙노트

[SPRING] Spring MVC requestmapping 핸들러 메소드에서 {id :. +}의 의미는 무엇입니까?

SPRING

Spring MVC requestmapping 핸들러 메소드에서 {id :. +}의 의미는 무엇입니까?

나는 컨트롤러에서 한 가지 방법을 발견했다. 이 ID는 무엇인가 : + + ??

@RequestMapping(value="/index/{endpoint}/{type}/{id:.+}", method=RequestMethod.POST, consumes=kContentType, produces=kProducesType)
@ResponseBody
public String indexData(@PathVariable(value="endpoint") String endpoint, @PathVariable(value="type") String type, @PathVariable(value="id") String id, @RequestBody String body, HttpServletRequest request) {
    logger.debug("In web controller for endpoint " + endpoint);
    return indexController.indexData(endpoint, type, id, body,  getSecurityContextProvider(request));
}

해결법

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

    1.스프링 MVC 컨트롤러 요청 매핑에서 path 변수의 구문은 {variable_name : regular_expression}입니다. 선택적으로 정규 표현식을 생략 할 수 있습니다. 그러면 정규 표현식이 더 자주 표시됩니다 ({id}).

    스프링 MVC 컨트롤러 요청 매핑에서 path 변수의 구문은 {variable_name : regular_expression}입니다. 선택적으로 정규 표현식을 생략 할 수 있습니다. 그러면 정규 표현식이 더 자주 표시됩니다 ({id}).

    예를 들어, /index/{endpoint}/{type}/{id:.+} 변수 이름은 id이고 정규 표현식은. + (스프링 문서 참조).

    정규 표현식. +은 "메타 문자와 1 회 이상 일치"를 표시합니다. '.' 메타 문자는 공백을 포함한 문자를 나타냅니다 (일부 구현은 개행과 일치하지 않음). http://en.wikipedia.org/wiki/Regular_expression을 참조하십시오.

    정규 표현식을 사용하면 복잡한 변수 이름을 가질 수 있기 때문에 변수의 값을 결정할 수 있습니다. 그렇지 않으면 Spring이 "go"라고 말하면 변수 값에 빨려 들어갈 경로 끝에 다른 중요한 정보가있을 수 있습니다. 경로의 끝까지 "(예 : 파일 이름 확장자 또는 경로 변수).

    여러분의 예제에서 id 변수는 특수 문자를 포함 할 수 있습니다. 그렇지 않으면 Spring이 변수를 조기에 종료시킬 수 있습니다. 파일 확장명 (foobar.jpg)이 포함 된 파일 이름을 사용하려고 시도하기 전에이 문제가 발생했습니다. Spring은 변수의 값을 마침표로 끝내기를 원했기 때문에 Spring은 변수의 "foobar"부분 만 반환합니다. 그래서이 경우 "id"가 전체 값과 일치하는지 확인하기 위해 Spring에게 마지막 슬래시와 경로 끝 사이의 모든 것을 일치 시키도록 지시하는 정규식을 넣습니다. 그래서 참조 : Spring MVC @PathVariable 잘림

    다음은 복잡한 변수 매칭을 다루는 Spring 문서에서 발췌 한 내용입니다.

    여기에 (상당히 복잡한) 예가 있습니다.

    @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}")
    public void handle(@PathVariable String version, @PathVariable String extension) {
        // ...
    }
    

    출처 : http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

    이 예제는 정규 표현식을 사용하지 않고는 요청에서 컨트롤러 메소드 매개 변수까지 복잡한 매핑을 수행하는 방법을 보여줍니다.

  2. from https://stackoverflow.com/questions/20527321/what-is-the-meaning-of-id-in-a-spring-mvc-requestmapping-handler-method by cc-by-sa and MIT license