我从以前就一直觉得很奇怪,为何要对HttpServletResponse物件,
写入给http response本身的讯息时,要从HttpServletResponse物件调用getWriter方法
然后透过PrintWriter物件写入回传讯息。
而非直接写入HttpServletResponse物件?例如HttpServletResponse物件提供了
一些setXXX方法,例如setContentType、setHeader、setCacheControl......
来直接写入讯息到HttpServletResponse物件。既然可以有这些setXXX方法
那么为何要将主要回传讯息写入HttpServletResponse物件,要用的是getWriter方法?
我目前的理解是:
因为HttpServletResponse物件跟http response本身,两者是关联的,
既然两者有关连,那么若是HttpServletResponse物件提供某些类别/接口,
由于
接口与HttpServletResponse物件、HttpServletResponse物件跟http response的关联,
所以,外部的讯息就可借由使用这些类别/接口,将外部讯息写入http response本身。
因此,只要HttpServletResponse物件提供某些类别/接口,
即可让外部程式将讯息写入http response本身。
所以,HttpServletResponse物件具备了某些类别/接口,可透过getXXX方法将其取出,
这个getXXX方法,就是getWriter方法、getOutputStream方法。
透过getWriter方法取出的接口,经过实例化后成为PrintWriter物件,
这时若要将外部讯息写入http response本身,就只要将该讯息写入PrintWriter物件。
即可透过上面所述的关联性,将该讯息写入http response本身。
而透过此法将外部讯息写入http response本身,原理和一开始所以提到的那些
setXXX方法不同,而是先要取得接口才行,难怪明明是要写入(set)讯息,却是要先
getWriter、getOutputStream。
希望这样理解没有错误,有错的话麻烦鞭小力一点= =