请教过滤器问题
各位高手,
我写了一个filter来过滤网页中的某些文字,但总是报错,
package com.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class MyFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
PrintWriter out=response.getWriter();
PageResponseWrapper wrapper=new PageResponseWrapper((HttpServletResponse)response);
chain.doFilter(request,wrapper);
String resStr=wrapper.toString();
String newStr="";
resStr=resStr.replaceAll("xxxx", "yyyyyyyyyyy");
resStr=resStr.replaceAll("zzzz", "yyyyyyyyyyy");
newStr=resStr;
out.println(newStr);
System.out.print("******************************");
}
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {}
}
package com.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class PageResponseWrapper extends HttpServletResponseWrapper {
private CharArrayWriter output;
public String toString(){
return output.toString();
}
public PageResponseWrapper(HttpServletResponse response){
super(response);
output=new CharArrayWriter();
}
public PrintWriter getWriter(){
return new PrintWriter(output);
}
}
报错:
java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '13779' bytes instead of stated: '7512' bytes..
java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '13779' by
tes instead of stated: '7512' bytes.
at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength
(ServletOutputStreamImpl.java:422)
at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(Ser
vletResponseImpl.java:1416)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImp
l.java:1459)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1415)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
Truncated. see log file for complete stacktrace
>
java.lang.StringIndexOutOfBoundsException: String index out of range: -52
at java.lang.String.substring(String.java:1938)
at weblogic.servlet.internal.ChunkOutputWrapper.print(ChunkOutputWrapper
.java:158)
at weblogic.servlet.internal.ChunkWriter.write(ChunkWriter.java:51)
at java.io.PrintWriter.newLine(PrintWriter.java:436)
at java.io.PrintWriter.println(PrintWriter.java:585)
Truncated. see log file for complete stacktrace