详情请参考:https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#request-path-elements
请求路径包含下面几部分:
- Context Path:与ServletContext 关联的路径前缀。如果这个上下文是默认的上下文(以web服务器 URL命名空间的基作为作为根),Context Path是空字符串;否则,以"/“字符作为开头,但是结尾不包含”/"字符。
- Servlet Path:直接对应servelt-url映射的路径部分,以"/“字符作为开头;但当请求是以”/*“或者”"模式被匹配到的时候,Servlet Path是空字符串。
- PathInfo:请求路径中不是Context Path、Servlet Path的部分。当没有额外路径的时候,它的值是null;否则就是以"/"开头的字符串。
jakarta.servlet.http.HttpServletRequest中有对应的方法访问上面路径的各部分:
- getContextPath
- getServletPath
- getPathInfo
注意:
requestURI 和路径的各部分除了URL编码造成的不同以外,下面成立:
requestURI = contextPath + servletPath + pathInfo
Servlet规范中给出的举例: