请求路径元素
引导 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 |