How can I get the request URL from a Java Filter?
Is this what you're looking for?
if (request instanceof HttpServletRequest) { String url = ((HttpServletRequest)request).getRequestURL().toString(); String queryString = ((HttpServletRequest)request).getQueryString();}
To Reconstruct:
System.out.println(url + "?" + queryString);
Info on HttpServletRequest.getRequestURL()
and HttpServletRequest.getQueryString()
.
Building on another answer on this page,
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();}
If you use Spring, you can use OncePerRequestFilter
or others.
import org.springframework.web.filter.OncePerRequestFilter;import org.springframework.stereotype.Component;@Componentpublic class MyFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String url = request.getRequestURL(); filterChain.doFilter(request, response); }}