How can I get the request URL from a Java Filter? How can I get the request URL from a Java Filter? java java

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