HttpServletRequest 读取多次
时间: 2023-09-29 11:04:58 浏览: 150
为什么SpringMVC中请求的body不支持多次读取
HttpServletRequest可以通过创建一个扩展了HttpServletRequestWrapper的类来实现多次读取。在这个扩展类中,可以使用ContentCachingRequestWrapper类提供的getContentAsByteArray()方法来多次读取请求的正文。具体实现可以参考以下步骤:
1. 首先,创建一个新类CachedBodyHttpServletRequest,它扩展了HttpServletRequestWrapper。
2. 在这个类的构造函数中,从实际的InputStream中读取请求的正文,并将其存储在一个byte[]对象中。
3. 这样,就可以通过调用getContentAsByteArray()方法来多次读取请求的正文。
以下是一个示例代码:
```java
public class CachedBodyHttpServletRequest extends HttpServletRequestWrapper {
private byte[] cachedBody;
public CachedBodyHttpServletRequest(HttpServletRequest request) throws IOException {
super(request); InputStream requestInputStream = request.getInputStream();
this.cachedBody = StreamUtils.copyToByteArray(requestInputStream);
}
public byte[] getCachedBody() {
return this.cachedBody;
}
}
```
使用CachedBodyHttpServletRequest类,您可以在需要的时候多次读取HttpServletRequest对象的正文。
阅读全文