在servlet中获取请求url的一部分

我有一个使用/ev/* url-pattern映射的EmailVerification Servlet。

 http://example.com/ev/ce52320570 

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

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

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

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

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

我怎样才能将此ce52320570作为URL的一部分http://example.com/ev/ce52320570

  • request.getRequestURI()将以String获取请求的URL,例如/ev/ce52320570

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

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

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

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

    • 如果它是一个多值参数,请使用.getParameterValues()

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

使用request.getRequestURI()并删除你不需要的东西,即request.getRequestURI().replace("/ev/");