2013-05-11 12 views
12

Mam serwlet EmailVerification zmapowany za pomocą wzoru adresu URL /ev/*.Uzyskiwanie części adresu URL żądania wewnątrz serwletu

http://example.com/ev/ce52320570 

Jak mogę dostać ten ce52320570 część adresu URL w moim serwletu?

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

Jeśli chcesz * * Parametry ścieżki trzeba będzie obsługiwać je na siebie, opierając się 'HttpServletRequest' metod. Jeśli mógłbyś zastąpić je * parametrami zapytania * wszystko byłoby łatwiejsze. – skuntsel

+0

Napisałem odpowiedź, że może być lepiej, ale zwróci ostatnią część tylko również nie zawierającą ukośnika ... –

+0

@acdcjunior Muszę zachować szczególną opiekę nad url jak 'http://xyz.com/ev/ce52320570/'- _having dodatkowe'/'na końcu_. wygląda na to, że trzeba trochę więcej dzielić i wymieniać. Czy masz lepszy sposób na to? – JAVAGeek

Odpowiedz

28

Zważywszy serwletu (tzw EmailVerification) odwzorowaną do /ev/*:

będzie URL http://example.com/ev/ce52320570 spust EmailVerification aplet?

Tak. W Servlet wersji 2.5 i 3.0 (może wcześniej), otrzyma ścieżkę podrzędną, jeśli mapujesz ją z *, jak /ev/*, tak jak ty.

Jak mogę dostać ten ce52320570 część URL http://example.com/ev/ce52320570?

  • request.getRequestURI() będzie Ci żądany adres URL jako String, jak /ev/ce52320570.

  • request.getPathInfo() dostaje (jeśli istnieje) wszystko po /ev/.

    • więc we wniosku do /ev/123, getPathInfo() nie daje /123. W ten sam sposób, żądanie do /ev/some/other, getPathInfo() dałoby Ci /some/other.

  • request.getQueryString() powinny być stosowane, jeśli trzeba kwerendy Parametry część adresu URL.

    • Pamiętaj zarówno getRequestURI() i getPathInfo() daje tylko ścieżka wymagane. Jeśli potrzebujesz uzyskać parametry zapytania :, czyli te po ?, takie jak /ev/something?query1=value1&other=123, tylko request.getQueryString() zwrócą część query1=value1&other=123.
  • request.getParameter(parameterName) jeśli potrzebujesz wartość specyficzny zapytania parametru.


Więcej przykładów części adresu URL w żądaniu here.

+0

jest ich dowolną opcją inną niż rozdzielenie '/ ev/ce52320570' po ostatnim'/', aby uzyskać identyfikator – JAVAGeek

+0

Tak,' request.getPathInfo() 'dostaje (jeśli istnieje) ty wszystko po'/ev/'. – acdcjunior

+2

@acdcjunior W ostatniej części 'request.getParameter (paramName)' jest bardziej odpowiednie niż 'requedt.getQueryString()', ponieważ pozwala uzyskać wysłaną wartość za jednym zamachem. – skuntsel

0

Zastosowanie request.getRequestURI() i usunąć to, czego nie potrzebujesz, to znaczy request.getRequestURI().replace("/ev/");

Powiązane problemy