小编Mic*_*ger的帖子

使用 ContentCachingRequestWrapper 导致空参数映射

我已经实现了一个过滤器,我想先读取请求的内容进行一些检查,然后再继续。

但问题是,在过滤器链的以下过滤器中,调用的是getParameters()Method fromclass Request (org.eclipse.jetty.server.Request)而不是getParameters()from的方法class ContentCachingRequestWrapper。所以parametersMap没有被填满,总是空的。

这是我的代码的样子:

@Component
@Order(1)
public class EncodingFilter extends GenericFilterBean {

private static final Logger LOG = 
LoggerFactory.getLogger(EncodingFilter.class);

@Override
public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {

final HttpServletRequest req = (HttpServletRequest) request;
HttpServletRequest servletRequest = new ContentCachingRequestWrapper(req);

String read = ByteSource.wrap(ByteStreams.toByteArray(servletRequest.getInputStream()))
        .asCharSource(StandardCharsets.UTF_8).read();
// Doing analysis .....
// last step call filter chain
chain.doFilter(servletRequest, response);
}
}
Run Code Online (Sandbox Code Playgroud)

在控制器中:

@PostMapping(
    value = Endpoints.Janus.INIT, …
Run Code Online (Sandbox Code Playgroud)

java spring embedded-jetty

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

embedded-jetty ×1

java ×1

spring ×1