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

时间:2013-05-11 20:35:51

标签: java java-ee servlets httprequest url-pattern

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

http://example.com/ev/ce52320570

如何在Servlet中获取此ce52320570部分内容?

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

2 个答案:

答案 0 :(得分:31)

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

  

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

是。在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/othergetPathInfo()的请求会为您提供/some/other

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

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


请求here中的网址部分的更多示例。

答案 1 :(得分:1)

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