Comment puis-je obtenir l’URL de la demande à partir d’un filtre Java?

J’essaie d’écrire un filtre capable de récupérer l’URL de la requête, mais je ne sais pas trop comment faire.

Voici ce que j’ai jusqu’ici:

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); Ssortingng url = ((HttpServletRequest) request).getPathTranslated(); System.out.println("Url: " + url); } public void destroy() { } } 

Lorsque je frappe une page sur mon serveur, la seule sortie que je vois est “Url: null”.

Quelle est la manière correcte d’obtenir l’URL demandée à partir d’un object ServletRequest donné dans un filtre?

Est-ce ce que vous cherchez?

 if (request instanceof HttpServletRequest) { Ssortingng url = ((HttpServletRequest)request).getRequestURL().toSsortingng(); Ssortingng querySsortingng = ((HttpServletRequest)request).getQuerySsortingng(); } 

Reconstruire:

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

Informations sur HttpServletRequest.getRequestURL() et HttpServletRequest.getQuerySsortingng() .

 request.getRequestURL(); 
  • Documentation

S’appuyant sur une autre réponse sur cette page ,

 public static Ssortingng getCurrentUrlFromRequest(ServletRequest request) { if (! (request instanceof HttpServletRequest)) return null; return getCurrentUrlFromRequest((HttpServletRequest)request); } public static Ssortingng getCurrentUrlFromRequest(HttpServletRequest request) { SsortingngBuffer requestURL = request.getRequestURL(); Ssortingng querySsortingng = request.getQuerySsortingng(); if (querySsortingng == null) return requestURL.toSsortingng(); return requestURL.append('?').append(querySsortingng).toSsortingng(); }