- 创建拦截器类
创建一个拦截器类,实现 HandlerInterceptor 接口。在 preHandle 方法中获取请求的 header 信息并打印
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HeaderLoggingInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
// 获取所有的 header 名称
Enumeration<String> headerNames = request.getHeaderNames();
// 遍历所有的 header 名称,并打印键值对
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println("Header: " + headerName + " = " + headerValue);
}
return true; // 执行下一个拦截器或处理程序
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
// 在请求处理之后调用,可在这里进行一些处理
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 在整个请求完成之后调用,可在这里进行一些处理
}
}
- 注册拦截器
在配置类中注册拦截器
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HeaderLoggingInterceptor()).addPathPatterns("/**");
}
}
在上述例子中,addPathPatterns(“/**”) 表示拦截所有请求,您可以根据实际需求进行调整