我有工作的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...
}
}
答案 0 :(得分:9)
我认为解决方案是在getPathInfo()
的javadoc中额外路径信息遵循servlet路径,但在之前 查询字符串,将以“/”字符开头。
在Spring的情况下,servlet路径是完整路径,因此如果你调用getServletPath(),它将始终返回完整的URI,而getPathInfo()将不返回任何内容。