Próbuję napisać filtr, który może pobrać adres URL żądania, ale nie wiem, jak to zrobić.
Oto, co mam do tej pory:
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class MyFilter implements Filter {
public void init(FilterConfig config) throws ServletException { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
chain.doFilter(request, response);
String url = ((HttpServletRequest) request).getPathTranslated();
System.out.println("Url: " + url);
}
public void destroy() { }
}
Kiedy trafiam na stronę na serwerze, jedyne wyjście, które widzę, to „Url: null”.
Jaki jest prawidłowy sposób uzyskania żądanego adresu URL z danego obiektu ServletRequest w filtrze?
java
url
servlet-filters
ampersandre
źródło
źródło
getRequestURL()
powracaStringBuffer
, nieString
.queryString
.request.getServletPath()
, przydaje się w JavaServer Faces, aby pobrać odpowiednik identyfikatora widoku (ścieżka z katalogu głównego aplikacji internetowej do strony xhtml, z wyłączeniem domen, przedrostkiem wdrożenia itp.)Opierając się na innej odpowiedzi na tej stronie ,
public static String getCurrentUrlFromRequest(ServletRequest request) { if (! (request instanceof HttpServletRequest)) return null; return getCurrentUrlFromRequest((HttpServletRequest)request); } public static String getCurrentUrlFromRequest(HttpServletRequest request) { StringBuffer requestURL = request.getRequestURL(); String queryString = request.getQueryString(); if (queryString == null) return requestURL.toString(); return requestURL.append('?').append(queryString).toString(); }
źródło
źródło