filters example dofilter java url servlet-filters

example - java filter pentaho



¿Cómo puedo obtener la URL de solicitud de un filtro de Java? (3)

Es esto lo que estás buscando?

if (request instanceof HttpServletRequest) { String url = ((HttpServletRequest)request).getRequestURL().toString(); String queryString = ((HttpServletRequest)request).getQueryString(); }

Para reconstruir:

System.out.println(url + "?" + queryString);

Información sobre HttpServletRequest.getRequestURL() y HttpServletRequest.getQueryString() .

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 toco una página en mi servidor, el único resultado que veo es "Url: null".

¿Cuál es la forma correcta de obtener la URL solicitada de un objeto ServletRequest determinado en un filtro?


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(); }