Estoy intentando escribir un filtro que pueda recuperar la URL de la solicitud, pero no estoy seguro de cómo hacerlo.
Esto es lo que tengo hasta ahora:
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() { }
}
Cuando llego a una página en mi servidor, la única salida que veo es "Url: null".
¿Cuál es la forma correcta de obtener la URL solicitada de un objeto ServletRequest determinado en un filtro?
java
url
servlet-filters
ampersandre
fuente
fuente
getRequestURL()
devuelveStringBuffer
, noString
.queryString
.request.getServletPath()
, es útil en JavaServer Faces para recuperar el equivalente de la identificación de la vista (la ruta desde la raíz de la aplicación web a la página xhtml, excluyendo dominios, prefijo de implementación, etc.)Sobre la base de otra respuesta en esta página ,
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(); }
fuente
fuente