在 servlet 中获取部分请求 URL

我有一个用url模式映射的Servlet。EmailVerification/ev/*

http://example.com/ev/ce52320570

如何在我的 Servlet 中获取这部分 URL?ce52320570

protected void doPost(HttpServletRequest request, HttpServletResponse response)
                                                     throws ServletException, IOException {
      String vid = "";  // Here I need to get the id from the URL
}

答案 1

考虑一个 Servlet(称为 )映射到:EmailVerification/ev/*

URL http://example.com/ev/ce52320570 会触发 servlet 吗?EmailVerification

是的。在 Servlet 版本 2.5 和 3.0(可能更早)中,如果您像您一样使用 ,例如 映射它,它将获得子路径。*/ev/*

如何获取此 ce52320570 部分 URL http://example.com/ev/ce52320570

  • request.getRequestURI() 会将请求的 URL 作为 , like .String/ev/ce52320570

  • request.getPathInfo() 获取 (如果存在) 之后的所有内容。/ev/

    • 所以在请求中,会给你.同样,对 的请求会给你 ./ev/123getPathInfo()/123/ev/some/othergetPathInfo()/some/other

  • request.getQueryString() 应该使用,如果你需要 URL 的查询参数部分。

    • 请记住这两者,并仅为您提供请求的路径。如果需要获取查询参数,即 后面的那些,like ,只会返回该部分。getRequestURI()getPathInfo()?/ev/something?query1=value1&other=123request.getQueryString()query1=value1&other=123
  • request.getParameter(parameterName)如果你需要一个特定查询参数的值。


此处为请求中 URL 部分的更多示例。


答案 2

使用和删除您不需要的内容,即request.getRequestURI()request.getRequestURI().replace("/ev/");


推荐