Sevlet reouestDisaatcher:的forward()kinclude的区别
forward()与include()的区别,主要表现在标准输出流的开启时间不同
forward()
forward这个单词表示的意思是“向前”,说明当前的请求还未结束,需要继续“向前”,所以服务器就不会在这里打开标准输出流。所以此时写入到out中的数据是不会写入到客户端浏览器中的。
使用forward()方法的Servlet,其标准输出流还未开启。
对客户端的响应可定不是forward()方法的Servlet给出的
include()
这个单词表示的意思是“包含”,说明当前的请求已经结束,可以对客户端进行响应了。其不仅将自己的数据写入到了标准输出流,还要将其他数据包含到自己的输出流中。
使用include()方法的Servlet,其标准输出流已经打开。
对客户端的响应是由使用include()方法的Servlet给出的。
结论
在使用forward()进行请求转发时,使用forward()的Servlet不应向Response中写入数据,
若要写入数据,则应使用include()进行转发。