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

JAV*_*eek 13 java servlets httprequest url-pattern java-ee

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

http://example.com/ev/ce52320570
Run Code Online (Sandbox Code Playgroud)

如何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
}
Run Code Online (Sandbox Code Playgroud)

acd*_*ior 31

考虑将Servlet(被调用EmailVerification)映射到/ev/*:

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

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

我怎样才能获得这ce52320570部分网址http://example.com/ev/ce52320570

  • request.getRequestURI()String像你一样得到所要求的网址/ev/ce52320570.

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

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

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

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


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

  • @acdcjunior在最后一部分`request.getParameter(paramName)`比`requedt.getQueryString()`更适用,因为它允许一次性获取发送的值. (2认同)