某个jsp页面的代码中有:....out.write(...);....response.setHeader(...);....//具体的参数我就不写了
上面的语句的执行顺序是,首先执行out.write()后执行setHeader(),但是http的响应头肯定是先于内容发送给用户的,这个响应头还会包括response.setHeader()中的值对。也就是说,虽然out.write()先于setHeader()执行,但是out.write()的执行并没有把要写入的数据立即写给客户,而是在执行完所有jsp代码后(运行完所有的setHeader后)再把内容写给用户。我的问题是jsp服务器是怎么实现这一个过程的。我想知道服务器的工作机制。谢谢大家了
上面的语句的执行顺序是,首先执行out.write()后执行setHeader(),但是http的响应头肯定是先于内容发送给用户的,这个响应头还会包括response.setHeader()中的值对。也就是说,虽然out.write()先于setHeader()执行,但是out.write()的执行并没有把要写入的数据立即写给客户,而是在执行完所有jsp代码后(运行完所有的setHeader后)再把内容写给用户。我的问题是jsp服务器是怎么实现这一个过程的。我想知道服务器的工作机制。谢谢大家了
synchronized (lock) {
if (writeBuffer == null){
writeBuffer = new char[writeBufferSize];
}
writeBuffer[0] = (char) c;
write(writeBuffer, 0, 1);
}
}看到writeBuffer没想了解看源码就行了.
我的想法和sunyujia兄弟的一样,流一般占用一个固定的缓冲区,
当刷新或关闭时才会把流的数据显示出来,
这个显示一般时系统控制,当然也可以时用户强制输出缓冲区这里应该时系统自己控制,所以才会出现上面的情况
再顶一下