如何在写入之前验证servlet请求/响应?

时间:2015-05-26 00:07:30

标签: java validation servlets

我有这个问题铬随机提交我的请求两次因某些我不知道的原因,我在这里解释,https://stackoverflow.com/questions/30444861/servlet-called-twice-when-loading-small-pdf-files-on-chrome,我非常想要一个避免双重提交的解决方案但是现在补丁将不得不做。

在我的servlet中,我使用下一行代码读取和编写PDF:

        FileInputStream archivo = new FileInputStream(nFile);
        int longitud = archivo.available();
        byte[] datos = new byte[longitud];
        archivo.read(datos);
        archivo.close();

        OutputStream ouputStream = response.getOutputStream();
        ouputStream.write(datos);
        ouputStream.flush();
        ouputStream.close();

因此,每当chrome double提交时,我都会在行处获得损坏的管道异常:

ouputStream.write(datos);

我第二次尝试写信给它。

如何在尝试编写“ouputStream”之前验证“ouputStream”是否有效,这样就不会抛出异常?

或者更好的是,我可以在过滤器上验证它吗?

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {

    if (request instanceof HttpServletRequest) {
        filterChain.doFilter(request, response);
    }

} 

我如何验证我可以在这行代码中写入响应?

filterChain.doFilter(request, response);

此外,它需要是一个servlet 2.3解决方案。

0 个答案:

没有答案