我是最近才注意到这一点,其他有 http 实现的语言(框架),基本上,在 http 地址解析这个问题上,会倾向于把域名根路径“/”之后开始的部分视为一个整体,嗯,最多就是可能会把路径的最后部分——如果有后缀名的话——视为文件本身。比如 http://www.v2ex.com/aaa/bbb/ccc/ddd/123.txt。那么请求路径就是 /aaa/bbb/ccc/ddd/。这是一个整体,一般不会再拆分。但是在 servlet 的实现上,有两个东西,1 个叫 servletPath ( request.getServletPath()),一个叫 pathinfo ( request.getPathInfo())。而且很有意思的是,这两个东西的值是和 web.xml 配置文件中的 url-pattern 所采用的模式有关,我想了很长时间,没想明白这样的意义在哪里,为啥 servlet 在设计上没有把 /aaa/bbb/ccc/ddd/视为一个整体,而专门搞了 ServletPath,PathInfo。这应该是有某种作用的