Как я могу получить URL-адрес запроса из фильтра Java?
Я пытаюсь написать фильтр, который может получить URL-адрес запроса, но я не уверен, как это сделать.
вот что у меня пока есть:
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() { }
}
когда я нажимаю страницу на моем сервере, единственный вывод, который я вижу, это "Url: null".
Как правильно получить запрошенный URL из данного объекта ServletRequest в фильтре?
3 ответа:
это то, что вы ищете?
if (request instanceof HttpServletRequest) { String url = ((HttpServletRequest)request).getRequestURL().toString(); String queryString = ((HttpServletRequest)request).getQueryString(); }
Восстановить:
System.out.println(url + "?" + queryString);
информация о
HttpServletRequest.getRequestURL()
иHttpServletRequest.getQueryString()
.
дом на еще один ответ на этой странице,
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(); }