目前在做老系统的下线工作,在彻底下线之前,需要再统计一下还有谁在向老系统发送http请求。
该功能可以通过过滤器实现。
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;@WebFilter("/*") // 这个注解定义了哪些URL模式会触发这个过滤器
public class RefererLoggingFilter implements Filter {@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 过滤器初始化时调用,可以在这里进行一些准备工作
}@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
// 获取Referer头部的值
String referer = httpRequest.getHeader("Referer");
if (referer != null && !referer.isEmpty()) {
// 记录Referer值,这里只是简单地打印出来,实际应用中可能需要将其存储在日志或数据库中
System.out.println("Referer: " + referer);
}
// 继续执行其他过滤器或目标资源
chain.doFilter(request, response);
}@Override
public void destroy() {
// 过滤器销毁时调用,可以在这里进行一些清理工作
}
}