在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/other
,getPathInfo()
的请求会给你/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/");