Servlets Servlet响应包装器实现导致空响应

Servlets Servlet响应包装器实现导致空响应,servlets,request,response,wrapper,Servlets,Request,Response,Wrapper,我尝试实现servlet响应包装器来修改响应。 我的目标是在html中添加几个标记 这段代码运行良好,标记被正确地添加到html中。 但问题是,在非IE7浏览器中,一切都能正常工作。 IE9/Firefox根本没有任何问题。即使是来自其他桌面的IE7也没有问题。只有我的IE7浏览器有这个问题,它只是显示空页-完整的白色屏幕。 即使右键单击view source,也会显示头/体为空的html 通过Fiddler我看到响应代码是200,但内容长度是0 如果同时执行F5两次,Fidder将显示此错误

我尝试实现servlet响应包装器来修改响应。 我的目标是在html中添加几个标记

这段代码运行良好,标记被正确地添加到html中。 但问题是,在非IE7浏览器中,一切都能正常工作。 IE9/Firefox根本没有任何问题。即使是来自其他桌面的IE7也没有问题。只有我的IE7浏览器有这个问题,它只是显示空页-完整的白色屏幕。 即使右键单击view source,也会显示头/体为空的html

通过Fiddler我看到响应代码是200,但内容长度是0

如果同时执行F5两次,Fidder将显示此错误

Fiddler在会话#3中检测到协议冲突

服务器未返回格式正确的HTTP头。HTTP头 应使用CRLFCRLF终止。这些以LFLF终止

我没有操纵任何标题属性。虽然它在除我的浏览器之外的任何地方都能工作,但我想知道问题出在哪里,因为我们无法预测浏览器是如何像我的一样存在的

这是我的密码

    HttpServletRequest httpServletRequest   = (HttpServletRequest)request;
    HttpServletResponse httpServletResponse = (HttpServletResponse)response;
    BrowserRequestWrapper requestWrapper    = new BrowserRequestWrapper(httpServletRequest);
    BrowserResponseWrapper responseWrapper  = new BrowserResponseWrapper(httpServletResponse);
    PrintWriter responsePrintWriter         = response.getWriter();
    filterChain.doFilter(requestWrapper,responseWrapper);
    try {           
        String responseString       = responseWrapper.toString();           
        String processedResponse    = getProcessedResponse(responseString);         
        response.setContentLength( processedResponse.length() );
        
        responsePrintWriter.write(processedResponse);
        //responsePrintWriter.flush();
        responsePrintWriter.close();
    } catch (Throwable t) {
        Logger.getLocation().errorT("doFilter","An exception has occured");
        Logger.getStackTrace(t);
    }   
这是包装类

public class BrowserResponseWrapper extends HttpServletResponseWrapper {
private CharArrayWriter output;

public String toString() {
    return output.toString();
}
public BrowserResponseWrapper(HttpServletResponse response){
    super(response);
    output = new CharArrayWriter();
}

public PrintWriter getWriter(){     
    return new PrintWriter(output);
}
}