JAVA自定义请求拦截器
时间: 2023-11-16 13:05:04 浏览: 37
在Java中,可以通过自定义请求拦截器来拦截和处理请求。以下是一个示例:
首先,需要定义一个拦截器接口:
```
public interface RequestInterceptor {
boolean preHandle(HttpServletRequest request, HttpServletResponse response) throws Exception;
void postHandle(HttpServletRequest request, HttpServletResponse response) throws Exception;
void afterCompletion(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
```
然后,实现该接口:
```
public class LoggingInterceptor implements RequestInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("Incoming request: {} {}", request.getMethod(), request.getRequestURI());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.info("Outgoing response: {} {}", response.getStatus(), response.getContentType());
}
}
```
在preHandle方法中,可以记录请求的信息。在afterCompletion方法中,可以记录响应的信息。
最后,将拦截器注册到应用程序中:
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoggingInterceptor());
}
}
```
这样,每次请求进入和响应结束时,都会被该拦截器拦截并进行记录。