关于Filter截取到response返回数据的问题
在filter的doFilter中要传入一个包装好的ServletResponse,
类如下,请问为什么这样写就能拿到response返回的数据,
private CharArrayWriter output明明是自己定义的一个
私有成员变量,为什么把这个类的对象传入doFilter,output
就成了response的输出流了呢?
这后面具体的原理谁能说清楚啊?谢谢大虾们,踊跃回答,参与者有分
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileCaptureResponseWrapper
extends HttpServletResponseWrapper
{
private CharArrayWriter output;
public String toString()
{
return output.toString();
}
public FileCaptureResponseWrapper(HttpServletResponse response)
{
super(response);
output = new CharArrayWriter();
}
public PrintWriter getWriter()
{
return new PrintWriter(output);
}
public void writeFile(String fileName)
throws IOException
{
FileWriter fw = new FileWriter(fileName);
fw.write( output.toCharArray() );
fw.close();
}
public void writeResponse(PrintWriter out)
{
out.print( output.toCharArray() );
}
}