Springboot的Interceptor中打印请求报文
时间: 2024-12-21 17:27:37 浏览: 15
在Spring Boot中,要拦截并打印HTTP请求报文,你可以使用`HandlerInterceptorAdapter`接口或更现代的WebMvcConfigurer接口下的`WebMvcInterceptor`。这里我们以`HandlerInterceptorAdapter`为例:
首先,创建一个实现了`HandlerInterceptorAdapter`的自定义拦截器类,如`RequestLoggingInterceptor`:
```java
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class RequestLoggingInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 打印请求信息
System.out.println("----------- Pre-Request Logging -----------");
System.out.printf("Method: %s\n", request.getMethod());
System.out.printf("URL: %s\n", request.getRequestURI());
System.out.println("Parameters: " + request.getParameterMap());
// 可以选择是否继续处理请求,这里默认true
return true;
}
// 其他方法如postHandle()和afterCompletion()可以用于处理请求结束后的操作,如果需要的话
}
```
然后,在Spring Boot配置类中注册这个拦截器:
```java
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 RequestLoggingInterceptor());
}
}
```
这样,每次HTTP请求过来,都会先经过这个拦截器,打印出请求的相关信息。
阅读全文