I have an EmailVerification
Servlet mapped with /ev/*
url-pattern.
http://example.com/ev/ce52320570
How can I get this ce52320570
part of the URL in my Servlet?
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String vid = ""; // Here I need to get the id from the URL
}
Considering a Servlet (called EmailVerification
) mapped to /ev/*
:
Will the URL http://example.com/ev/ce52320570
trigger the EmailVerification
servlet ?
Yes. In Servlet versions 2.5 and 3.0 (maybe earlier), it'll get the subpath if you map it with *
, like /ev/*
, as you did.
How can I get this ce52320570
part of the URL http://example.com/ev/ce52320570
?
request.getRequestURI()
will get you the requested URL as a String
, like /ev/ce52320570
.
request.getPathInfo()
gets you (if exists) everything after /ev/
.
- So in a request to
/ev/123
, getPathInfo()
would give you /123
. The same way, a request to /ev/some/other
, getPathInfo()
would give you /some/other
.
request.getQueryString()
should be used if you need the query parameters part of the URL.
- Keep in mind both
getRequestURI()
and getPathInfo()
give you only the path requested. If you need to obtain the query parameters, that is, those after the ?
, like /ev/something?query1=value1&other=123
, only request.getQueryString()
would return the query1=value1&other=123
part.
request.getParameter(parameterName)
if you need the value of a specific query parameter.
- Resort to
.getParameterValues()
if it is a multivalued parameter
More examples of the URL parts in the request here.
Use request.getRequestURI()
and remove what you don't need, i.e. request.getRequestURI().replace("/ev/");