Ich versuche, einen Filter zu schreiben, der die Anforderungs-URL abrufen kann, bin mir aber nicht sicher, wie ich das tun soll.
Folgendes habe ich bisher:
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() { }
}
Wenn ich eine Seite auf meinem Server aufrufe, wird nur "Url: null" angezeigt.
Was ist der richtige Weg, um die angeforderte URL von einem bestimmten ServletRequest-Objekt in einem Filter abzurufen?
java
url
servlet-filters
kaufmännisches Und
quelle
quelle
getRequestURL()
kehrt zurückStringBuffer
, nichtString
.queryString
.request.getServletPath()
, ist es in JavaServer Faces hilfreich, das Äquivalent der Ansichts-ID abzurufen (den Pfad vom Webanwendungsstamm zur xhtml-Seite, ohne Domänen, Bereitstellungspräfix usw.)Aufbauend auf einer anderen Antwort auf dieser Seite ,
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(); }
quelle
quelle