如何从Java筛选器获取请求URL?
我正在尝试编写一个可以检索请求URL的过滤器,但我不确定如何执行 以下是我到目前为止的情况:如何从Java筛选器获取请求URL?,java,url,servlet-filters,Java,Url,Servlet Filters,我正在尝试编写一个可以检索请求URL的过滤器,但我不确定如何执行 以下是我到目前为止的情况: import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class MyFilter implements Filter { public void init(FilterConfig config) throws ServletExcept
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”
从过滤器中给定的ServletRequest对象获取请求的URL的正确方法是什么
request.getRequestURL();
- 这就是你要找的吗
if (request instanceof HttpServletRequest) {
String url = ((HttpServletRequest)request).getRequestURL().toString();
String queryString = ((HttpServletRequest)request).getQueryString();
}
重建:
System.out.println(url + "?" + queryString);
和的信息。基于
如果使用Spring,则可以使用
OncePerRequestFilter
或其他
import org.springframework.web.filter.OncePerRequestFilter;
导入org.springframework.stereotype.Component;
@组成部分
公共类MyFilter扩展了OncePerRequestFilter{
@凌驾
受保护的void doFilterInternal(HttpServletRequest请求、HttpServletResponse响应、FilterChain FilterChain)抛出ServletException、IOException{
字符串url=request.getRequestURL();
filterChain.doFilter(请求、响应);
}
}
<代码> GETRealesturrl()/Case>返回代码> StringBuffer < /代码>,而不是<代码>字符串< /代码>。最好考虑NULL代码> QuetryString < /C>的模式。如果您希望“被删除的部分”,GETRealesturi()不返回一个以“/”开头的字符串。如果只需要servlet的路径,可以使用request.getServletPath()
,在JavaServer Faces上检索视图id的等价物(从webapp根目录到xhtml页面的路径,不包括域、部署前缀等)非常有用。ServletRequest不实现getRequestURL()。如果可能的话,您需要根据Buhake的回答将其转换为HttpServletRequest,因为它缺少参数
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();
}