Servlets Servlet响应包装器实现导致空响应
我尝试实现servlet响应包装器来修改响应。 我的目标是在html中添加几个标记 这段代码运行良好,标记被正确地添加到html中。 但问题是,在非IE7浏览器中,一切都能正常工作。 IE9/Firefox根本没有任何问题。即使是来自其他桌面的IE7也没有问题。只有我的IE7浏览器有这个问题,它只是显示空页-完整的白色屏幕。 即使右键单击view source,也会显示头/体为空的html 通过Fiddler我看到响应代码是200,但内容长度是0 如果同时执行F5两次,Fidder将显示此错误 Fiddler在会话#3中检测到协议冲突 服务器未返回格式正确的HTTP头。HTTP头 应使用CRLFCRLF终止。这些以LFLF终止 我没有操纵任何标题属性。虽然它在除我的浏览器之外的任何地方都能工作,但我想知道问题出在哪里,因为我们无法预测浏览器是如何像我的一样存在的 这是我的密码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将显示此错误
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);
}
}