应该使用缓冲区,你的代码写一个字符就要前后端就要交互一次,那当然慢.
char[] buf = new char[4096];
java.util.Arrays.fill(buf,'0');
int len = 10000000;
PrintWriter p = new PrintWriter(response.getOutputStream());
while (len>0){
  p.print(buf);
  len = len - 4096;
  if (len<4096)
    break;
}
buf = new char[len];
java.util.Arrays.fill(buf,'0');
p.print(buf);