请求路径元素

引导 servlet 服务请求的请求路径由许多重要部分组成。以下元素从请求URI路径得到,并通过请求对象公开:

  • Context Path:与ServletContext相关联的路径前缀是这个Servlet 的一部分。如果这个上下文是基于Web服务器的URL命名空间基础上的“默认”上下文,那么这个路径将是一个空字符串。否则,如果上下文不是基于服务器的命名空间,那么这个路径以“/”字符开始,但不以“/”字符结束。
  • Servlet Path:路径部分直接与激活请求的映射对应。这个路径以“/”字符开头,如果请求与“/*”或“”模式匹配,在这种情况下,它是一个空字符串。
  • PathInfo:请求路径的一部分,不属于Context Path或Servlet Path。如果没有额外的路径,它要么是null,要么是以“/”开头的字符串。

使用 HttpServletRequest 接口中的下面方法来访问这些信息:

  • getContextPath
  • getServletPath
  • getPathInfo

重要的是要注意,除了请求 URI 和路径部分的 URL 编码差异外,下面的等式永远为真:

  1. 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