2013-05-11 2 views
12

У меня есть EmailVerification Сервлет, нанесенный на карту с /ev/* url-pattern.Получение части запроса url внутри сервлета

http://example.com/ev/ce52320570 

Как я могу получить эту ce52320570 часть URL в моем Servlet?

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

Если вы хотите * Параметры пути * вы будете обращаться с ними на себя, исходя от 'HttpServletRequest' методы. Если вы можете заменить их на * параметры запроса, все будет проще. – skuntsel

+0

Я отправил ответ, который может быть лучше, пока он вернет последнюю часть только без содержания косой черты ... –

+0

@acdcjunior Мне нужно больше заботиться о URL-адресе, например 'http://xyz.com/ev/ce52320570/'- _в дополнительном'/'в конце_. это выглядит немного дополнительной работой, чтобы расколоть и заменить вещи. У вас есть лучший способ для этого? – JAVAGeek

ответ

28

Учитывая сервлета (так называемый EmailVerification) сопоставлен /ev/*:

Будет ли URL http://example.com/ev/ce52320570 Активизируйте EmailVerification сервлет?

Да. В версиях Сервлета 2.5 и 3.0 (возможно, раньше) он получит подпуть, если вы наберете его с *, например /ev/*, как и вы.

Как я могу получить эту ce52320570 часть URL http://example.com/ev/ce52320570?

  • request.getRequestURI() получит Вас требуемый URL в качестве 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) если вам нужно значение конкретных запрос параметра.

    • Прибегнуть к .getParameterValues() если это многозначное параметру

Другие примеры URL частей в запросе here.

+0

- это их любая опция, кроме разделителя '/ ev/ce52320570' после последнего'/', чтобы получить идентификатор – JAVAGeek

+0

Да,' request.getPathInfo() 'получает (если существует) все после'/ev/'. – acdcjunior

+2

@acdcjunior В последней части 'request.getParameter (paramName)' более применимо, чем 'requedt.getQueryString()', так как позволяет получить отправленное значение за один раз. – skuntsel

0

Использование request.getRequestURI() и удалить то, что вам не нужно, то есть request.getRequestURI().replace("/ev/");