14

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

http://example.com/ev/ce52320570

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

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

2 回答 2

32

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

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

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

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

  • request.getRequestURI()将为您提供请求的 URL String,例如/ev/ce52320570.

  • request.getPathInfo()得到你(如果存在)之后的一切/ev/

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

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

    • 记住两者getRequestURI(),只getPathInfo()给你请求路径。如果需要获取查询参数,也就是?like后面的/ev/something?query1=value1&other=123,只request.getQueryString()返回query1=value1&other=123部分。
  • request.getParameter(parameterName)如果您需要特定查询参数的值。


请求中的 URL 部分的更多示例在这里

于 2013-05-11T20:45:46.757 回答
1

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

于 2013-05-11T20:47:34.903 回答