2011-11-10 6 views
5

스프링 bean에 액세스해야하는 스프링 MVC 컨트롤러로 변환해야하는 서블릿을 처리했습니다. 일반적인 서블릿 request.getPathInfo()은 왜 반환하지 않고 null이 아니지만, 스프링 컨트롤러에서 null 값을 받습니까? 나는 @PathVariable을 사용할 수 있지만이 방법의 결과가 왜 다른지 궁금해하십니까?Spring MVC 컨트롤러 - getPathInfo()가 null입니다.

@RequestMapping(value = {"/test", "/test/*"}) 
public void test(HttpServletRequest req, HttpServletResponse res) { 

    log.info(req.getPathInfo() == null); // true! 

    if (req.getMethod().equalsIgnoreCase("get")) { 
     // analogue to doGet... 
    } else { 
     // analogue to doPost... 
    } 

} 
+0

당신이 치고있는 URL은 무엇입니까? –

+0

URL : http : // localhost : 8080/myApp/test/hello'. 'req.getPathInfo()'shuld return'/ hello' – marioosh

답변

6

나는 솔루션 대해 getPathInfo의 javadoc는()

여분의 경로 정보가 서블릿 경로를 따라하지만 쿼리 문자열을 선행하고 "/"로 시작하는 것입니다 생각합니다.

서블릿 경로는 전체 경로이므로 getServletPath()를 호출하면 항상 전체 URI가 반환되고 getPathInfo()는 아무 것도 반환하지 않습니다.

+0

이것은 올바른 대답으로 확실히 표시되어야합니다. –

관련 문제