복붙노트

[SPRING] spring-mvc : "a / b / {c}"형식으로 URI 템플릿을 매핑하는 방법은 무엇입니까?

SPRING

spring-mvc : "a / b / {c}"형식으로 URI 템플릿을 매핑하는 방법은 무엇입니까?

"/ a / b"또는 "/ a / {b}"형태로 URI 템플릿을 얻을 수 있습니다. 하지만 "/ a / b / {c}"를 시도하면 HTTP 404와 메시지가 "[URI가있는 HTTP 요청에 대해 매핑이 없습니다 [/ myapp / a / b / c]"형식으로 나타납니다. .. "그러나 나는 로그에서이 메시지를 볼 수 있는데, 이것은 매핑이 정확하다고 믿게 만든다 ...?

INFO: Mapped URL path [/a] onto handler 'AController'
Nov 16, 2010 12:18:39 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/a/*] onto handler 'AController'
Nov 16, 2010 12:18:39 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler

나는 spring-mvc docs에있는 모든 예제가 "/ a / {b}"또는 / a / {b} / c / {d} "형식의 URI 템플릿을 보여주고 있음을 확인했습니다."/ a / b / c} "불가능합니다. web.xml에서 구성해야 할 일이 있습니까? 아니면 일부 패턴이 매핑되지 않도록 할 수 있습니까? 현재 Dispatcher 서블릿은 다음에 매핑됩니다.

<url-pattern>/</url-pattern>

컨트롤러는 다음과 같습니다.

@Controller
public class AController {
    @RequestMapping(value = "/a/b/{c}", method = RequestMethod.GET)
    public ModelAndView show() {
        ModelAndView modelAndView = new ModelAndView("A");
        return modelAndView;
    }
}

http : // localhost : 8080 / myapp / a / b / c에 액세스하면 404가 반환되고 로그에 표시됩니다.

Nov 16, 2010 12:19:06 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/myapp/a/b/c] in DispatcherServlet with name 'dispatcher'

내 URI 패턴을 올바르게 매핑하는 방법에 대한 아이디어가 있습니까?

해결법

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

    1.이것은 ControllerClassNameHandlerMapping이 핸들러 맵핑으로 사용될 때만 발생합니다.

    이것은 ControllerClassNameHandlerMapping이 핸들러 맵핑으로 사용될 때만 발생합니다.

    주석 된 컨트롤러는 일반적으로 DefaultAnnotationHandlerMapping과 함께 사용되며,이 경우 모든 것이 정상적으로 작동합니다.

    편집하다: 사실, ControllerClassNameHandlerMapping의 합법적 인 동작처럼 보입니다. aController를 / a / **가 아닌 / a / *로 매핑하므로 경로 계층 구조의 한 수준 만 허용됩니다. 그리고 완전한 유연성이 필요한 경우 DefaultAnnotationHandlerMapping을 사용하십시오.

  2. ==============================

    2.나는 그것이 가능하다는 것을 확인할 수있다. 컨트롤러의 스 니펫을 게시 할 수 있습니까?

    나는 그것이 가능하다는 것을 확인할 수있다. 컨트롤러의 스 니펫을 게시 할 수 있습니까?

  3. ==============================

    3.아래에서 시도해 볼 수 있습니까?

    아래에서 시도해 볼 수 있습니까?

    @RequestMapping (value = "/ a / b / {c}", method = RequestMethod.GET)

    public ModelAndView show(@PathParam("c") String c) {
    
        ModelAndView modelAndView = new ModelAndView("A");
    
        return modelAndView;
    }
    
  4. from https://stackoverflow.com/questions/4196577/spring-mvc-how-to-map-uri-templates-in-the-form-of-a-b-c by cc-by-sa and MIT license