Spring MVC控制器 - getPathInfo()为null

时间:2011-11-10 10:51:50

标签: spring-mvc controller

我有工作的servlet,需要转换为Spring MVC控制器才能访问spring bean等。为什么普通的servlet request.getPathInfo()不返回null,但在Spring Controller中我得到null值?我知道我可以使用@PathVariable,但想知道为什么这种方法的结果不同?

@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...
    }

}

1 个答案:

答案 0 :(得分:9)

我认为解决方案是在getPathInfo()

的javadoc中
  

额外路径信息遵循servlet路径,但在之前   查询字符串,将以“/”字符开头。

在Spring的情况下,servlet路径是完整路径,因此如果你调用getServletPath(),它将始终返回完整的URI,而getPathInfo()将不返回任何内容。