请求路径元素
引导 servlet 服务请求的请求路径由许多重要部分组成。以下元素从请求URI路径得到,并通过请求对象公开:
- Context Path:与 ServletContext 相关联的路径前缀是这个servlet 的一部分。如果这个上下文是基于 Web 服务器的 URL 命名空间基础上的“默认”上下文,那么这个路径将是一个空字符串。否则,如果上下文不是基于服务器的命名空间,那么这个路径以 / 字符开始,但不以 / 字符结束。
- Servlet Path:路径部分直接与激活请求的映射对应。这个路径以“/”字符开头,如果请求与“/ *”或“”模式匹配,在这种情况下,它是一个空字符串。
PathInfo:请求路径的一部分,不属于 Context Path 或 Servlet Path。如果没有额外的路径,它要么是null,要么是以’/‘开头的字符串。
使用 HttpServletRequest 接口中的下面方法来访问这些信息:getContextPath
- getServletPath
- getPathInfo
重要的是要注意,除了请求 URI 和路径部分的 URL 编码差异外,下面的等式永远为真:
requestURI = contextPath + servletPath + pathInfo
举几个例子来解析上述各点,请考虑以下几点:
TABLE 3-1 Example Context Set Up
Context Path | /catalog |
---|---|
Servlet Mapping | Pattern: /lawn/* Servlet: LawnServlet |
Servlet Mapping | Pattern: /garden/* Servlet: GardenServlet |
Servlet Mapping | Pattern: *.jsp Servlet: JSPServlet |
遵守下列行为:
TABLE 3-2 Observed Path Element Behavior
请求路径 | 路径元素 |
---|---|
/catalog/lawn/index.html | ContextPath: /catalog ServletPath: /lawn PathInfo: /index.html |
/catalog/garden/implements/ | ContextPath: /catalog ServletPath: /garden PathInfo: /implements/ |
/catalog/help/feedback.jsp | ContextPath: /catalog ServletPath: /help/feedback.jsp PathInfo: null |